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

时间:2015-10-14 13:38:31

标签: c# msbuild visual-studio-2015

我正在使用Visual Stduio 2015社区版。我已经加载了一个C#项目,并希望将其配置为使用阴影构建,因此源文件不会与任何二进制文件或中间构建文件混淆。尝试使用VS UI设置C#项目的[输出] / [中间输出]目录路径 - 唯一的UI可编辑输出路径是“bin”输出路径,它不接受MSBuild macros。然后我卸载了项目并手动编辑了它。还要设置在使用C#项目时在VS UI中不可用的IntermediateOutputPath,但在使用C ++时,所有这类目录都是可编辑的。 目前,OutputPath设置为: <OutputPath>$(SolutionDir)..\build_$(SolutionName)_$(Configuration)_$(Platform)\$(ProjectName)</OutputPath>

由于某种原因,

$(ProjectName)为空。尝试$(TargetName)(使用它但不仅仅是测试),但它也是空的。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我相信你已经解决了这个问题。我今天面对同样的事情。 问题是某些msbuild属性(如projectname)是在.csproj文件中的以下行之后设置的。

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

在此行之后,您可以访问所有变量。

答案 1 :(得分:0)

请勿尝试导入Microsoft.CSharp.targets-就像另一个答案中所建议的那样。 首先-这将导致其他警告,例如

Warning MSB4011: "Microsoft.CSharp.targets" cannot be imported again. ...

但是除此之外,如果您尝试编辑构建前/构建后,Visual Studio将崩溃。 (在Visual Studio 2019中已观察到,版本16.7.7)

更好地使用$(MSBuildProjectName)宏而不是$(ProjectName)-的工作原理相同。