gpt4 book ai didi

command-line - 用于更改AssemblyName的项目级别而不是解决方案级别的Msbuild命令行参数

转载 作者:行者123 更新时间:2023-12-04 04:14:07 25 4
gpt4 key购买 nike

在构建多项目解决方案时,是否可以为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失败的原因是因为它使用传入的程序集名称即MyProj.Test重命名了每个项目的AssemblyName。这是有道理的,因为通过命令行传递的参数是全局的,但是我还是只针对csproj文件。

    无论如何,这会发生。那么,有什么方法可以传递msbuild命令行参数来仅更改MyProj.Shell.csproj文件中的一个AssemblyName属性?

    最佳答案

    您可以编辑所涉及的项目(其.csproj文件),以从特殊属性中获取程序集名称(如果已指定),即:

    <AssemblyName Condition=" '$(ThisProjectNameOverrideAssemblyName)' == '' " >UsualAssemblyName</AssemblyName>
    <AssemblyName Condition=" '$(ThisProjectNameOverrideAssemblyName)' != '' " >$(ThisProjectNameOverrideAssemblyName)</AssemblyName>

    因此,当您构建有问题的项目时,只需传递 ThisProjectNameOverrideAssemblyName来覆盖此项目的 AssemblyName:
    msbuild /p:ThisProjectNameOverrideAssemblyName=NewAssemblyName

    关于command-line - 用于更改AssemblyName的项目级别而不是解决方案级别的Msbuild命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553524/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com