Visual Studio - 更改 NuGet 的临时文件输出目录

Posted

技术标签:

【中文标题】Visual Studio - 更改 NuGet 的临时文件输出目录【英文标题】:Visual Studio - Change NuGet's output directory for temporary files 【发布时间】:2020-06-24 02:25:21 【问题描述】:

目前,VS 项目的默认行为似乎是 NuGet 管理的依赖项具有 NuGet 在编译期间生成的中间文件。这些文件是这些,在obj 文件夹中:

我喜欢能够控制这些输出目录的名称(正如您在 BinaryObject 中看到的那样),并且我想设置我的项目以便不使用 obj 文件夹通过 NuGet 来存储这些文件。有没有办法在项目级别或解决方案级别指定这一点?也许是一个 MSBuild XML 代码 sn-p?会很好。

任何信息将不胜感激。

【问题讨论】:

请在您的项目文件夹下创建一个名为Directory.Build.props 的文件,然后将其添加到其中:<Project><PropertyGroup><MSBuildProjectExtensionsPath>$(ProjectDir)Binary\</MSBuildProjectExtensionsPath> </PropertyGroup> </Project>。有了这个,你可以控制 nuget 的输出文件。 【参考方案1】:

有没有办法在项目级别或解决方案级别指定这一点? 也许是一个 MSBuild XML 代码 sn-p?会很好。

如果你想改变这些nuget restore文件在另一个文件夹,你可以尝试使用Directly.Build.props文件来控制它。

解决方案

1) 在您的项目中创建一个名为 Directly.Build.props 的文件。

然后在这个文件中添加这些:

<Project>
  <PropertyGroup>
    <MSBuildProjectExtensionsPath>$(ProjectDir)Binary\</MSBuildProjectExtensionsPath>
  </PropertyGroup>
</Project>

注意:MSBuild 属性只能被另一个属性覆盖。这意味着您可以将 obj 文件夹覆盖为二进制文件夹。如果要生成BinaryObject两个文件夹,可以试试这些:

a) 当您尝试第 1 步然后构建项目时,您可以将Directly.Build.propsfile 中的属性更改为$(ProjectDir)Object\,然后再次重新构建。之后,您将看到它们。

b) 执行复制任务,并将这些内容写在您的xxxx.csproj 文件中。

<Target Name="CopyNugetfiles" AfterTargets="Build">
    <ItemGroup>
      <MySourceFiles Include="$(ProjectDir)Binary\*.*"/>
    </ItemGroup>
      <Copy
          SourceFiles="@(MySourceFiles)"
          DestinationFolder="$(ProjectDir)Object\"/>
  </Target>

希望对你有帮助。

【讨论】:

不确定步骤 (b) 中发生了什么,但创建上述 Directory.Build.props 为我修复了它。谢谢!

以上是关于Visual Studio - 更改 NuGet 的临时文件输出目录的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio NuGet离线安装

如何下载没有 nuget.exe 或 Visual Studio 扩展的 Nuget 包?

VS(Visual Studio)中Nuget的使用

Visual Studio 2013 更新 NuGet 包管理器

Visual Studio 下nuget命令的使用

Visual Studio 2015 出现 NuGet 安装程序包错误解决方法