停止Visual Studio在输出目录中复制Nuget软件包



免责声明:这是.Net Framework特定的问题,在.Net Core中不会发生。

我目前正在做一个项目,作为一个更大项目的插件。我想将我的项目的输出路径设置为较大项目的AddIn文件夹,然后用我项目的调试属性启动较大项目,这样我就不必每次手动复制和附加到项目。

我拥有的任何引用都是从更大的项目中共享和管理的,这意味着我没有(也不应该(将它们复制到AddIn文件夹中。

我在.csproj(VS 19/新格式(中包含了这个答案中的代码

<ItemDefinitionGroup>
<Reference>
<Private>False</Private>
</Reference>
<ProjectReference>
<Private>False</Private>
</ProjectReference>
</ItemDefinitionGroup>

以排除项目引用和常规引用,但在.Net Framework中,Nuget包中的所有.dlls也被复制到输出路径。我也在寻找一种禁用它的方法,但还没有找到。

是否有方法阻止Nuget包中的.dlls复制到.Net Framework中的输出路径

看看github的这篇文章。除此之外,@Maytham完美地覆盖了它:

为什么不将项目的nuget包发布到AddIn?这有帮助吗?

他是对的。这应该会有所帮助。但是,只是简单回顾一下github的帖子:

您可以关闭每个包的运行时访问:

<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" ExcludeAssets="runtime" />
</ItemGroup>

或者你可以对所有包都这样做:

<ItemDefinitionGroup>
<PackageReference ExcludeAssets="runtime" />
</ItemDefinitionGroup>

一旦你有了它,就用不同的输出路径创建一个CopyNuGetDependencies(或你想称之为什么(项目。确保它引用了所有NuGet包,但没有ExcludeAssets。它只负责将NuGet包直接复制到输出中。

这应该会停止所有问题。

最新更新