@jammywork1

Почему не получается использовать зарегистрированную в системе сборку?

Написал на c# библиотеку, хочу использовать её в MS Access средствами COM.
Суть проблемы в том что если я регистрирую мою сборку в системе средствами Visual Studio, то могу использовать её в MS Access, просто указав на неё reference, после чего обращаться к ней средствами VBA. Но если я сделаю это руками использую regasm либо tlbexp то при попытках вызова каких либо классов из сборки, получаю ошибку в RunTime: Не удаётся найти указанный файл.
d99a709e43314be98bf620b0ae19c08c.pngc6dcd979a3d2476e81f7bede77ec756e.png
Варианты регистрации:
e0ab5cb3f1b6462b8b53269dd7db393c.png

Однако поставив галочку для регистрации сборки через VS, я без проблем могу использовать сборку.
edd50bcbb2a747aba0f3a92173904b9c.pngb307429e910a4290a5b32b0992b5cb19.png

Исходные тексты примера

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace ClassLibrary1
{
    [ComVisible(true)]
    public class Class1
    {
        public string getTest()
        {
            return "Test Success";
        }
    }
}

VBA
Option Compare Database

Private Sub Button0_Click()

Dim test As TestBuild.Class1
Set test = New TestBuild.Class1
Debug.Print test.getTest

End Sub
  • Вопрос задан
  • 1918 просмотров
Пригласить эксперта
Ответы на вопрос 1
Neuroware
@Neuroware
Программист в свободное от работы время
Чисто теоретически, потому как проверить сейчас негде. Офис 64 битный? Если да то сборка должна быть тоже 64 битной и регистрировать через "%Windir%\Microsoft.NET\Framework64\v2.0.50727\regasm" "$(TargetPath)" для 2 версии net
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы