gpt4 book ai didi

visual-studio-2010 - 创建单独的ClickOnce安装,可以通过使用MSBUILD更改程序集名称来一起安装

转载 作者:行者123 更新时间:2023-12-04 03:44:09 24 4
gpt4 key购买 nike

我正在使用MSBUILD脚本创建发布,它看起来像这样:

msbuild "<Project>.vbproj" 
/t:Publish
/p:Configuration=Release
/p:ProductName="<Application Name> - <Region Name>"
/p:PublishDir="<Region Specific>"

到目前为止,这工作正常。

是否可以使用MSBUILD在可以安装在一起的不同位置创建多个发布?我知道,默认情况下,如果应用程序是相同的,则ClickOnce不允许您从其他位置安装应用程序(我相信它是使用程序集名称来确定的)。

我在这里回顾了这个话题:

Multiple ClickOnce installations with different Deployment Identity, but same Application Identity



由于这个原因,我修改了脚本来做到这一点:
msbuild "<Project>.vbproj" 
/t:Publish
/p:Configuration=Release
/p:ProductName="<Application Name> - <Region Name>"
/p:PublishDir="<Region Specific Unc>"
/p:AssemblyName="<Application Name>_<Region Name>"

但是我遇到了大量错误(例如1300多个错误),但是我不确定发生了什么。但是,如果我在Visual Studios中更改程序集名称并进行构建,则一切都很好。

有什么想法吗?

最佳答案

发生的结果是,在所有项目中都覆盖了AssemblyName属性,而msbuild在主项目的依赖链中进行了构建。这导致了很多编译错误。当您通过Visual Studio更改assemblyName时,您仅更改了主项目,从而使其能够正确构建。在我的一个项目中,我所做的是在主.vbproj文件上添加一个名为OverridenAssemblyName的属性,并在OverridenAssemblyName不为null时设置AssemblyName = OverridenAssemblyName。这样,您可以只为发布设置项目的AssemblyName,使其他项目保持完整。

编辑:

让我们想象一个场景,其中有2个项目。项目A是要发布的项目,项目B是项目A引用的项目。在.vbproj文件中,您具有类似<AssemblyName>YourProjectName</AssemblyName>的标记。因此,在项目A文件中,项目B中将具有<AssemblyName>Project A</AssemblyName><AssemblyName>Project B</AssemblyName>

该标记定义了在构建过程中为项目创建的程序集的名称。

在msbuild命令行中传递/p:AssemblyName="<Application Name>_<Region Name>"时,将覆盖构建过程中每个项目的标记AssemblyName。并且由于该属性定义了项目的程序集名称,因此所有项目都使用相同的名称来生成其程序集。那可能是造成您问题的原因。

一种可能的解决方案是执行以下操作:

  • 将此添加到您的主项目(要发布的项目)
    <PropertyGroup Condition="$(PublishAssemblyName) != ''">
    <AssemblyName>$(PublishAssemblyName)</AssemblyName>
    </PropertyGroup>
  • 将您的命令行更改为此:
  • msbuild "<Project>.vbproj"
    /t:Publish
    /p:Configuration=Release
    /p:ProductName="<Application Name> - <Region Name>"
    /p:PublishDir="<Region Specific Unc>"
    /p:PublishAssemblyName="<Application Name>_<Region Name>"

    希望对您有所帮助。

    关于visual-studio-2010 - 创建单独的ClickOnce安装,可以通过使用MSBUILD更改程序集名称来一起安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966151/

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