[英]Use $(TargetName) or $(ProjectName) in OutputPath of csproj
[英]$(ProjectName) and $(TargetName) MSBuild macros not working
我正在使用 Visual Stduio 2015 社区版。 我已经加载了一个 C# 项目并希望将其配置为使用影子构建,这样源文件就不会与任何二进制文件或中间构建文件混淆。 尝试使用 VS UI 设置 C# 项目的 [输出]/[中间输出] 目录路径 - 唯一的 UI 可编辑输出路径是“bin”路径,它不接受MSBuild 宏。 然后我卸载了项目并手动编辑它。 在使用 C# 项目时,还要设置在 VS UI 中不可用的 IntermediateOutputPath,但是当使用 C++ 时,所有此类目录都是可编辑的。 目前,OutputPath 设置为: <OutputPath>$(SolutionDir)..\\build_$(SolutionName)_$(Configuration)_$(Platform)\\$(ProjectName)</OutputPath>
$(ProjectName)
由于某种原因为空。 尝试过$(TargetName)
(使用它是不正确的,但仅用于测试)但它也是空的。 有什么建议?
问题是某些 MSBuild 属性(如 ProjectName)是在 .csproj 文件中的以下行之后设置的。
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
在此行之后,您可以访问所有变量。
不要尝试导入Microsoft.CSharp.targets
- 就像另一个答案中所建议的那样。 首先 - 它会导致额外的警告,如
Warning MSB4011: "Microsoft.CSharp.targets" cannot be imported again. ...
但除此之外,如果您尝试编辑预构建/构建后 Visual Studio 将崩溃。 (在Visual Studio 2019 16.7.7版本中观察到)
最好使用$(MSBuildProjectName)
宏而不是$(ProjectName)
- 工作原理相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.