Задать вопрос

Как запустить C# DLL библиотеку под office для х86 и х64?

Здравствуйте
Пытаюсь собрать и запустить Dll для Office (для Excel в частности). Бибилиотека написана на С#.
Собрал пример по этому уроку
Итак.
В VisualStudio 2019 был создан проект по шаблону "Библиотека классок NET.Framework".
В настройках установлен флажок для "Сделать сборку видимой для COM", целевая рабочая среда NET 3.5

Код рабочего класса
using System.Runtime.InteropServices;

namespace howto_dll_for_excel
{
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public class CSharpTools
    {
        [ComVisible(true)]
        public string AddBrackets(string value)
        {
            return "[" + value + "]";
        }
    }
}

Компиляция проходит без ошибок
После компиляции я регистрирую библиотеку dll используя
C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe
и ключи /tlb /codebase

В результате под excel 2007 x32 все работает отлично. Под excel 2010 x64 и 2013 x64 не работает и выдает ошибку Класс не зарегистрирован

Даже если зарегистрировать библиотеку под
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe
ошибка остается актуальной

Попытка перекомпилировать проект под NET.Framework 4.7 также не дала результатов.

Подскажите как запустить библиотеку под х64
  • Вопрос задан
  • 423 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@pfemidi
Тут могло бы быть краткое описание меня
Наверное надо скомпилировать библиотеку под x64.
Ответ написан
@none7
У меня были устаревшие сведения. Так, что в комментарии я наврал. Regasm которым Вы пользуетесь он 32-битный и все его записи попадают в WOW64 в том числе и записи в реестр. Используйте консоль для сборки x64, чтобы regasm писал в правильную ветвь реестра. Чтобы корректно установить библиотеку Вам понадобится вызвать 2 разных regasm!
Ответ написан
Комментировать
pton
@pton Автор вопроса
Попрбовал собрать изменив параметр "Целевая платформа" на х64 (стояло на Any CPU)
Проект собрался, но при регистрации выдает ошибку
C:\WINDOWS\system32>C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /tlb /codebase "D:\projects\VisualStudio\PytexOfficeHelper\bin\Debug\PytexOfficeHelper.dll"
Microsoft .NET Framework Assembly Registration Utility 4.8.3752.0
для Microsoft .NET Framework 4.8.3752.0
c Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

RegAsm : error RA0000 : Сбой при загрузке 'D:\projects\VisualStudio\PytexOfficeHelper\bin\Debug\PytexOfficeHelper.dll' из-за недопустимой сборки .NET

пробовал менять платформу NET у проекта и пересобирать. результат тот же.

Поменял платформу на х32, удалось зарегистрировать. Под excel 32 видит, под excel 64 нет. Выдает ошибку
Run-time error '429': ActiveX component can't create object
Ответ написан
Ваш ответ на вопрос

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

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