使用带有项目引用的项目自动使用msbuild发布clickonce

时间:2012-10-29 21:00:54

标签: .net msbuild tfsbuild

我正在尝试为点击一次.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'。
  3. 并且library.dll未包含在应用程序文件文件夹中,因此一旦安装失败就会发生单击。 对我来说,由于某种原因,msbuild试图发布依赖项目以及单击一次项目。有什么方法可以解决这个问题吗?

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

1 个答案:

答案 0 :(得分:0)

经过大量研究后,我们发现导致此问题的原因是在发出assemblyName参数后,在click的msbuild参数中。如果删除该参数,那么构建对于依赖的dll也可以正常工作。 因为对于每个项目,我们都有qa,beta和生产版本,我们需要能够在同一台计算机上并排运行它们,我们必须为不同的版本提供不同的程序集名称。如果您不在msbuild参数中提供程序集名称,则从项目文件中获取它。 我为此做的解决方法是创建了一个自定义活动,根据发布类型使用assemblyName更新项目文件。 如果有人想要我可以共享自定义活动的代码。 所以我在发布之前更改了项目文件中的程序集名称,它运行良好!!!