Упаковка собственных DLL вместе с проектом C++/CLI .NET 8 для использования в проекте .NET 8 C#.C#

Место общения программистов C#
Ответить
Anonymous
 Упаковка собственных DLL вместе с проектом C++/CLI .NET 8 для использования в проекте .NET 8 C#.

Сообщение Anonymous »

У меня есть:

1. Собственная dll myNativeLib.dll, скомпилированная с помощью MSVC (созданная в рамках проекта .vcxproj)

2. Проект .NET8, ориентированный на CPP/CLI, который создает myInteropLib.dll (созданный в рамках проекта .vcxproj)
Я публикую библиотеки DLL вместе, используя файл nuspec: В проекте в стиле SDK (.csproj) я использую этот пакет nuget: И я вижу, что библиотеки DLL находятся там, где я ожидал.

Код: Выделить всё

myCSProject/bin/x64/Debug/net8.0-windows7/myInteropLib.dll
myCSProject/bin/x64/Debug/net8.0-windows7/runtimes/win-x64/native/Ijwhost.dll
myCSProject/bin/x64/Debug/net8.0-windows7/runtimes/win-x64/native/myNativeLib.dll
Однако при запуске myCSProject я получаю сообщение об ошибке, что myInteropLib не найден:

Код: Выделить всё

    OneTimeSetUp: SetUp : System.IO.FileNotFoundException : Could not load file or assembly 'C:\path\to\myCSProject\bin\x64\Debug\net8.0-windows7\myInteropLib.dll'. The specified module could not be found.
Я знаю, что myInteropLib.dll существует, но открытие его с помощью «Зависимости» показывает, что он, в свою очередь, не может найти две собственные библиотеки:
Изображение

.deps.json для myCSProject (и myCSProject.test) показывает собственные зависимости с правильными путями:

Код: Выделить всё

{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"MyCSProject.Test/1.0.0": {
"dependencies": {
"myCSProject": "1.0.0",
"Microsoft.NET.Test.Sdk": "18.0.1",
"NUnit": "4.5.0",
"NUnit.Analyzers": "4.11.2",
"NUnit3TestAdapter": "6.1.0",
"coverlet.collector": "6.0.4"
},
"runtime": {
"myCSProject.dll": {}
}
},
"coverlet.collector/6.0.4": {},
"myInterOpLib/0.0.1": {
"runtime": {
"lib/net8.0-windows7/myInterOpLib.dll": {
"assemblyVersion": "1.0.9523.27495",
"fileVersion": "10.5.0.0"
}
},
"runtimeTargets": {
"runtimes/win-x64/native/Ijwhost.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "8.0.2325.60607"
},
"runtimes/win-x64/native/myNativeLib.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "10.5.0.0"
}
}
},
Если я вручную копирую собственные библиотеки DLL и Ijwhost.dll в каталог myCSProject/bin/x64/Debug/net8.0-windows7/ - приложение загружается и работает нормально. Однако, если я изменю цель файла nuspec, чтобы собственные библиотеки DLL публиковались в каталоге lib вместо runtimes/win-x64/native, в нижестоящем проекте генерируется предупреждение, и эта документация указывает, что каталог runtimes/win-x64/native является правильным для собственных DLL в пакете nuget.
Что дает?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-net8-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»