SDK*_*SDK 5 msbuild clickonce command-line
在构建多项目解决方案时,有没有办法为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"
只是澄清并重复几点:
/p:AssemblyName="MyProj.Text" /target:publish所以这是一次点击构建我知道示例2失败的原因是因为它使用传入的程序集名称重命名每个项目的AssemblyName,即MyProj.Test.这是有道理的,因为通过命令行传入的参数是全局的,但是我再次将目标定位在csproj文件中.
无论如何,这就是发生的事情.那么有没有办法传入一个msbuild命令行参数来改变MyProj.Shell.csproj文件中的一个AssemblyName属性?
Isa*_*pov 16
您可以编辑有问题的项目(其.csproj文件)以从特殊属性获取程序集名称(如果已指定),即:
<AssemblyName Condition=" '$(ThisProjectNameOverrideAssemblyName)' == '' " >UsualAssemblyName</AssemblyName>
<AssemblyName Condition=" '$(ThisProjectNameOverrideAssemblyName)' != '' " >$(ThisProjectNameOverrideAssemblyName)</AssemblyName>
Run Code Online (Sandbox Code Playgroud)
因此,当您构建有问题的项目时,只会将您的项目传递ThisProjectNameOverrideAssemblyName给覆盖AssemblyName:
msbuild /p:ThisProjectNameOverrideAssemblyName=NewAssemblyName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4749 次 |
| 最近记录: |