我在互联网上发现,人们可以在构建过程中使用msbuild.exe -property=<PropertyName>=<value>覆盖属性。例如,我可以使用msbuild.exe -property=OutDir=bin\ABC更改输出目录。
现在我的问题是,是否可以在覆盖语句中使用其他配置属性。意思是我想要实现这样的东西:msbuild.exe -property=OutDir=$(SolutionDir)Output\$(AssemblyName)\$(AssemblyVersion)
发布于 2021-03-26 14:31:17
不是的。你不能这么做。msbuild命令行赋值属性方法无法分析MSBuild如何获取值--$(XXX)。就是这样设计的。
如果这样做,您将在当前cd文件夹下获得名为$(SolutionDir)Output\$(AssemblyName)\$(AssemblyVersion)的输出文件夹。
因此,您应该只在msbuild命令行下使用outdir的直接完整路径。
如果你仍然得到了你想要的,你应该放弃msbuild命令行赋值属性的方法,而是直接将它添加到xxx.csproj文件下。
<PropertyGroup>
<OutDir>$(SolutionDir)Output\$(AssemblyName)\$(AssemblyVersion)</Outdir>
</PropertyGroup>直接使用msbuild xxx\xxx.csproj -t:build构建项目。
https://stackoverflow.com/questions/66804244
复制相似问题