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
文件夹中:
我喜欢能够控制这些输出目录的名称(正如您在 Binary
和 Object
中看到的那样),并且我想设置我的项目以便不使用 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 文件夹覆盖为二进制文件夹。如果要生成Binary和Object两个文件夹,可以试试这些:
a) 当您尝试第 1 步然后构建项目时,您可以将Directly.Build.props
file 中的属性更改为$(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 的临时文件输出目录的主要内容,如果未能解决你的问题,请参考以下文章
如何下载没有 nuget.exe 或 Visual Studio 扩展的 Nuget 包?