【问题标题】:Automate clickonce publish with msbuild for project with a project reference使用 msbuild 为带有项目参考的项目自动单击一次发布
【发布时间】:2012-10-29 21:00:53
【问题描述】:

我正在尝试为单击一次的 .net c# 应用程序自动化 tfs 构建。 我根据以下帖子编辑了默认 xaml:http://blog.dontpaniclabs.com/post/2011/04/29/ClickOnce-Publish-and-Deploy-from-Team-Foundation-Server-2010.aspx 它适用于没有引用项目的简单项目,但是对于引用库项目的单击一次项目,它不能正常工作。 构建成功,但实际上我收到以下 2 个警告:

  1. 无法为项目“library.dll”应用发布属性。
  2. 两个或多个程序集具有相同的标识“clickonceprojectname.Client, Version=1.0.1.17, Culture=neutral, PublicKeyToken=4F6F13E2414E9925, ProcessorArchitecture=msil”。

library.dll 不包含在应用程序文件夹中,因此一旦安装失败单击。 在我看来,由于某种原因,msbuild 正在尝试发布依赖项目以及单击一次项目。有什么办法可以解决这个问题吗?

我已经阅读了很多帖子,并且已经尝试了很多解决方案,包括确保项目文件中的 copy local = true,并在项目属性的发布选项卡中重置所有应用程序文件。 有人可以帮我吗?我为此苦苦挣扎了好几天

【问题讨论】:

    标签: .net msbuild tfsbuild


    【解决方案1】:

    经过大量研究,我们发现这个问题的原因是在 msbuild 参数中单击后发布了 assemblyName 参数。如果您删除该参数,则构建也适用于相关的 dll。 因为对于每个项目,我们都有 qa、beta 和生产版本,并且我们需要能够在同一台计算机上并排运行它们,所以对于不同的构建,我们必须有不同的程序集名称。如果您没有在 msbuild 参数中提供程序集名称,它将从项目文件中获取它。 我为此做的解决方法是创建一个自定义活动,根据发布类型使用 assemblyName 更新项目文件。 如果有人愿意,我可以分享自定义活动的代码。 所以我在发布前更改了项目文件中的程序集名称,效果很好!!!

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2011-01-24
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多