如何下载具有本机DLL的NuGet包而不在项目中引用而是复制到输出目录

时间:2018-02-23 06:28:55

标签: .net nuget-package nuspec

我有一个使用{{1}}属性的原生.dll的.NET项目。我们的项目指南禁止我们将任何DLL作为源代码的一部分。我使用nuspec文件创建了相同的NuGet包。现在问题是如何使用包而不将其引用到项目。我想将DLL复制到输出目录而不是在项目中引用。

我已经尝试添加包配置文件,并尝试使用prebuild命令恢复包并进一步复制,但没有解决。

任何人都有任何建议如何打包本机DLL并在项目中使用它以某种方式引用它?

1 个答案:

答案 0 :(得分:1)

不能确定您的要求,即您希望dll位于构建目录中,但不会在项目中引用它。

我猜你可以用目标做到这一点。

IE: Nuget Nuspec文件:(有更多必填字段,但只列出相关字段)

<?xml version="1.0"?>
<package >
  <metadata>
    <id>NugetName.Core</id>
  </metadata>
  <files>
    <file src="bin\Debug\YourDll.dll" exclude="lib\net452\YourDll.dll" />
    <file src="YourDll.dll" target="build\YourDll.dll" />
    <file src="NugetName.Core.targets" target="build\" />
  </files>
</package>

制作NugetName.Core.targets文件

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="$(MSBuildThisFileDirectory)YourDll.dll">
      <Link>YourDll.dll</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>