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

Visual Studio - Change NuGet's output directory for temporary files

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

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

如有任何信息,我们将不胜感激。

Is there a way to specify this at the project level or solution level? Maybe an MSBuild XML code snippet? Would be nice.

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

解决方案

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

然后将这些添加到此文件中:

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

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

a) 当您尝试第 1 步然后构建您的项目时,您可以将 Directly.Build.props 文件中的 属性 更改为 $(ProjectDir)Object\然后再次重建。在那之后,你会看到他们两个。

b) 做一个复制任务,请将这些写在你的 xxxx.csproj 文件中。

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

希望对您有所帮助。