Публикация проекта VB.Net с зависимостями для справки VSTA - PullRequest
0 голосов
/ 05 октября 2019

Любое руководство по этой теме очень, очень ценится! Я потратил около 3 полных рабочих дней, пытаясь решить проблему, и никак не могу понять, как это сделать.

ОК - краткое изложение проблемы. У меня есть проект библиотеки классов VS2019 (.net Framework 4.7.2). Ранее я просто «собирал» проект и затем ссылался на файл .tlb в Visual Basic для приложений (VBA использовался для пользовательского кодирования в другом программном обеспечении сторонних производителей, а не в приложении Office). Это работало хорошо для одного пользователя.

Теперь сторонний поставщик обновил свое программное обеспечение и ушел из VBA. Теперь они используют Visual Studio Tools for Applications (VSTA) для своего пользовательского интерфейса кодирования. Их метод, который я использовал раньше, по-видимому, сломан. Я больше не могу ссылаться на файл .tlb. Я считаю, что я вынужден ссылаться на .dll. Это создало непосредственные проблемы с приложением VSTA, не способным найти зависимости.

Мне удалось выяснить весь процесс NuGet, и я создал пакеты для моего приложения. Я все еще получаю ошибки зависимости от программного обеспечения. Вот пример:

[03:53:47]:Unexpected Exception Caught in InvokeWithListParameters:
   System.Reflection.TargetInvocationException Exception has been thrown by the target of an invocation.
    Exception Stack    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Vsta.Host.ReflectionExtensions.InvokeWithListParameters(MethodBase self, SimulationData data)
  Inner Exception System.IO.FileNotFoundException Could not load file or assembly 'AFRAddOns, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
      Inner Exception Stack    at VstaTemplate.VstaTemplate.Events.SimStart(SimulationData data)

Теперь я понимаю, что nuget упаковывает только проект, а не ссылки. Не все ссылки .dll также доступны для установки в виде пакетов nuget, поэтому их необходимо каким-то образом «прикрепить» к моему окончательно упакованному продукту.

Хорошо, последний удар заключается в том, что VSTA, похоже, «удаляет» все установленныепакеты каждый раз, когда графический интерфейс Visual Studio открывается и закрывается. Проще говоря, каждый раз, когда интерфейс VSTA открывается приложением, оно создает новую папку проекта для проекта VSTA и оставляет все папки пакетов в старой временной папке. Я заметил, что ссылка на .dll напрямую вместо использования пакетов nuget работает.

Итак, для всего этого, я хотел бы знать, как правильно упаковать библиотеку классов .net framework (сссылки) для ссылки в проекте VSTA, где nuget не представляется жизнеспособным вариантом.

Любая помощь снова очень, очень ценится! Я на 100% самоучка, и это тот, который я просто пока не могу обернуть вокруг себя.

Спасибо! David

...