【问题标题】:Msbuild command line argument at project-level not solution-level for changing AssemblyName项目级别的 Msbuild 命令行参数而不是用于更改 AssemblyName 的解决方案级别
【发布时间】:2013-03-21 16:55:01
【问题描述】:

在构建多项目解决方案时,是否有任何方法可以为 msbuild 指定仅适用于一个项目(即项目级别而不是解决方案级别)的命令行参数?

我问的原因是因为我想启用单击一次部署的并行安装。举个例子吧:

1) 这行得通

MSBuild "C:\Dev\MyProj\MyProj.Shell\MyProj.Shell.csproj" /p:SkipInvalidConfigurations=true /目标:发布 /p:OutputPath="C:\Dev\Temp\" /p:ApplicationVersion=1.2.3.4 /p:ProductName="My Proj" /p:Configuration="Release" /p:Platform="Mixed 平台” /verbosity:diagnostic

2) 这不是

MSBuild "C:\Dev\MyProj\MyProj.Shell\MyProj.Shell.csproj" /p:SkipInvalidConfigurations=true /目标:发布 /p:OutputPath="C:\Dev\Temp\" /p:ApplicationVersion=1.2.3.4 /p:ProductName="我的项目测试" /p:Configuration="发布" /p:Platform="混合平台" /verbosity:diagnostic /p:AssemblyName="MyProj.Test"

只是为了澄清和重申几点:

  • 1 和 2 之间的唯一区别是 /p:AssemblyName="MyProj.Text"
  • 我使用的是/target:publish,所以这是一次点击构建
  • 这是一个多项目解决方案,即使我只是针对一个 csproj 文件,它也会这样构建。

我知道 Example 2 失败的原因是因为它使用传入的程序集名称重命名每个项目的 AssemblyName,即 MyProj.Test。这是有道理的,因为通过命令行传入的参数是全局的,但是我再次只针对 csproj 文件。

反正就是这样。那么有什么方法可以传入 msbuild 命令行参数来仅更改 MyProj.Shell.csproj 文件中的一个 AssemblyName 属性?

【问题讨论】:

    标签: command-line msbuild clickonce


    【解决方案1】:

    您可以编辑有问题的项目(其 .csproj 文件)以从指定的特殊属性中获取程序集名称,即:

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

    因此,当您构建有问题的项目时,您只需传递您的 ThisProjectNameOverrideAssemblyName 以覆盖该项目的 AssemblyName

    msbuild /p:ThisProjectNameOverrideAssemblyName=NewAssemblyName
    

    【讨论】:

    • 谢谢 Isantipov,这是一种合理的可能性,但是,我正在寻找一种通用的方法来为项目执行此操作,而无需修改 csproj 文件。我怀疑这个问题的答案很简单,“不,你做不到”。
    • 我花了 2 天时间试图解决这个问题。不明白为什么它不起作用,所以感谢你们对问题的理解足以正确地提出问题以及答案本身!
    • 这只是救了我。我在为 win 表单应用程序设置 CI / CD 流程方面投入了大量工作,我需要并排安装 win 表单。问题是该解决方案是一个多项目解决方案,并且我覆盖的属性被应用于所有相关项目,导致构建失败。 stackoverflow.com/questions/55447528/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    相关资源
    最近更新 更多