停止Visual Studio将Nuget包复制到输出目录

5

免责声明: 这是一个与.Net Framework相关的问题,在.Net Core中不会出现。

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

我拥有的任何参考材料都与大型项目共享并由其管理,这意味着我不应该将它们复制到AddIn文件夹中。

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

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

在.NET Framework中,为了排除项目和常规引用,我的Nuget包中的所有.dll文件也都被复制到输出路径中。我正在寻找一种方法来禁用这个功能,但是还没有找到。

在.NET Framework中有没有停止从Nuget包中复制.dll文件到输出路径的方法?


3
为什么不将项目的 NuGet 包发布到 AddIn 中呢?这样做会有帮助吗? - Maytham Fahmi
@Azzarrel,如果您能接受并点赞就太好了 :) - Halo
1个回答

3
请看这个 GitHub 帖子:链接。除此之外,@Maytham 已经完美地解决了问题:

为什么不将项目的 NuGet 包发布到插件中?那样会有帮助吗?

他是对的。那应该有所帮助。但是,为了概括一下 GitHub 的帖子:
您可以关闭每个包的运行时访问权限:
<ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="12.0.1" ExcludeAssets="runtime" />
</ItemGroup>

或者你可以对所有软件包执行此操作:

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

一旦你拥有了那个,创建一个名为CopyNuGetDependencies(或其他你想要的名称)的项目,并设置不同的输出路径。确保它引用了所有NuGet包 - 但是没有使用ExcludeAssets。它仅负责将NuGet包直接复制到输出中。这样应该就能解决所有问题了。

1
谢谢。这是正确的解决方案,但它只适用于4.7.2或更高版本;4.7.1似乎有问题,但我还没有找到证实的参考文献。 - antiduh
当然可以!很高兴能帮忙! - Halo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接