在构建多项目解决方案时,是否有任何方法可以为 msbuild 指定仅适用于一个项目(即项目级别而不是解决方案级别)的命令行参数?
我问的原因是因为我想启用单击一次部署的并行安装。让我举个例子:
1)这行得通
MSBuild "C:\Dev\MyProj\MyProj.Shell\MyProj.Shell.csproj" /p:SkipInvalidConfigurations=true /target:publish /p:OutputPath="C:\Dev\Temp\" /p:ApplicationVersion=1.2。 3.4 /p:ProductName="My Proj" /p:Configuration="Release" /p:Platform="Mixed Platforms" /verbosity:diagnostic
2)这不
MSBuild "C:\Dev\MyProj\MyProj.Shell\MyProj.Shell.csproj" /p:SkipInvalidConfigurations=true /target:publish /p:OutputPath="C:\Dev\Temp\" /p:ApplicationVersion=1.2。 3.4 /p:ProductName="My Proj Test" /p:Configuration="Release" /p:Platform="Mixed Platforms" /verbosity:diagnostic /p:AssemblyName="MyProj.Test"
只是为了澄清和重申几点:
- 1 和 2 之间的唯一区别是
/p:AssemblyName="MyProj.Text"
- 我正在使用
/target:publish
,所以这是一次点击构建 - 这是一个多项目解决方案,即使我只是针对一个 csproj 文件,它也会这样构建。
我知道示例 2失败的原因是因为它使用传入的程序集名称重命名每个项目的 AssemblyName ,即MyProj.Test。这是有道理的,因为通过命令行传入的参数是全局的,但我再次只针对 csproj 文件。
无论如何,这就是发生的事情。那么有什么方法可以传入 msbuild 命令行参数来仅更改 MyProj.Shell.csproj 文件中的一个 AssemblyName 属性?