繁体   English   中英

$(ProjectName) 和 $(TargetName) MSBuild 宏不起作用

[英]$(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM