2

我正在尝试为单击一次的 .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 正在尝试发布依赖项目以及单击一次项目。有什么办法可以解决这个问题吗?

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

4

1 回答 1

0

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

于 2014-03-19T19:50:49.627 回答