NuGet: копирование файла .DLL без создания ссылки? - PullRequest
2 голосов
/ 17 января 2020

Я работаю над своим первым проектом с открытым исходным кодом , и теперь я хочу создать NuGet из него, чтобы его было легко использовать. В моем проекте я использую DLL (CoolProp.dll), которая является сторонней DLL.

При запуске программы необходимо иметь DLL в:

..\bin\Release\CoolProp.dll

In Обозреватель решений (VS) Я установил CoolProp.dll на:

Build Action: None
Copy to Output Directory: Copy always

Все это работает так, как должно, просто запустив код.

В файле .nuspe c Я добавил: (для этого, чтобы скопировать файл DLL)

<file src="bin\Release\CoolProp.dll" target="lib\net461" />

При установке Nuget я получаю следующую ошибку:

Failed to add reference to 'CoolProp'
Please make sure that the file is accessible, and that it is a valid assembly or COM component.

Я предполагаю, что он пытается добавить ссылка на файл dll, чего не должно быть. Нужно просто скопировать его и ничего больше.

Что я делаю не так? или я что-то неправильно понял?

1 Ответ

0 голосов
/ 17 января 2020

Я наконец-то заставил его работать!

Моя ошибка состояла в том, что я поместил dll в папку "lib \ net461". Насколько я понимаю, поместив его в эту папку, скажите системе сделать ссылку на нее.

Вместо этого я сделал это:

<file src="..\CoolProp.dll" target="build\" />
<file src="..\SharpFluids.targets" target="build\" />

Создаю имя файла "SharpFluids.targets" и поместите это в него:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <NativeLibs Include="$(MSBuildThisFileDirectory)**\*.dll" />
    <None Include="@(NativeLibs)">
      <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

Так что теперь он просто копирует файл dll в выходную папку, не пытаясь создать ссылку на него.

...