Teamcity:将VS 2010解决方案转换为VS 2012解决方案后无法部署

3
我有一个包含asp.net C#项目、4.0框架的VS 2010解决方案。我们使用Teamcity 7.1.1(构建24074)作为CI和部署服务器。
我们升级到了Visual Studio 2012,并转换了这个解决方案,还在构建服务器上安装了Microsoft Visual Studio 2012 Shell (Integrated) Redistributable Package,以便拥有构建Visual Studio应用程序所需的所有文件,包括[..]\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets。
转换到2012年后,我注意到部署不再起作用,工件也没有创建(但是Teamcity也没有抱怨!)。我只在构建日志中看到了这个:
[...]
[17:11:58][Providers\Providers.csproj.teamcity] GetCopyToOutputDirectoryItems
[17:11:58][Providers\Providers.csproj.teamcity] _CopyOutOfDateSourceItemsToOutputDirectoryAlways
[17:11:58][_CopyOutOfDateSourceItemsToOutputDirectoryAlways] Copy
[17:11:58][Copy] Copying file from "C:\TeamCity\buildAgent\work\c52628138e1ee4d4\Providers\NLog.config" to "bin\NLog.config".
[17:11:58][Providers\Providers.csproj.teamcity] CopyFilesToOutputDirectory
[17:11:58][CopyFilesToOutputDirectory] Copy
[17:11:58][Copy] Copying file from "obj\Release\Providers.dll" to "bin\Providers.dll".
[17:11:58][CopyFilesToOutputDirectory] Providers.csproj -> C:\TeamCity\buildAgent\work\c52628138e1ee4d4\Providers\bin\Providers.dll
[17:11:58][CopyFilesToOutputDirectory] Copy
[17:11:58][Copy] Copying file from "obj\Release\Providers.pdb" to "bin\Providers.pdb".

==> [17:11:58]Process exited with code 0

[17:11:58]Publishing internal artifacts
[17:11:58][Publishing internal artifacts] Sending build.finish.properties.gz file
[17:11:58]Publishing artifacts
[17:11:58][Publishing artifacts] Collecting files to publish: [Providers\obj\Release\Package]

==> [17:11:58][Publishing artifacts] Artifacts path Providers/obj/Release/Package not found

[17:11:58]Build finished

唯一对解决方案进行的更改是在 .sln 和 .csproj 文件中(由 Visual Studio 进行)。如果我恢复到以前的版本,TeamCity 将能够构建和部署而不出现问题。 项目文件的更改与此帖子中所述相同,我尝试了建议的解决方案(将 VisualStudioVersion=11.0 传递给 MSBuild),但没有成功。
如果我使用“解决方案资源管理器”中的“发布”链接从 Visual Studio 部署,它也能按预期工作。我将创建一个在 VS 2012 中具有基本项目的新解决方案,并测试它是否可以从 Teamcity 部署。
还有其他的想法吗?
--- 更新 ---
希望这不是解决方案:我与上面的帖子中建议的相反,设置了MSBuild参数VisualStudioVersion=10.0,它起作用了!因此,为了部署VS 2012项目,我必须将其视为VS 2010项目...你做了什么不同的事情?我应该怎么做才能在没有欺骗teamcity的情况下进行部署?
--- 更新 ---
我正在添加一些我的TeamCity配置快照。 Teamcity将系统和环境变量作为构建参数传递到MSBuild

General Settings

Build Steps

MSBuild

Configuration Parameters


在VS 2012中测试了一个新的解决方案(没有从2010进行转换)=>相同的结果,未创建工件。来自Teamcity的没有错误。 - qbantek
在构建服务器上安装了Microsoft Visual Studio 2012的Team Explorer,根据论坛上的建议:没有效果。我唯一没做的事情就是在构建服务器上安装VS 2012,我应该这样做吗? - qbantek
你发送给msbuild的命令行是什么? - Richard Szalay
@Richard Szalay:我添加了一些快照来回答那个问题。请检查我的最新编辑。 - qbantek
1个回答

3

更新

为了澄清,问题在于Web发布管道目标($(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets)并未安装在VS 2012集成外壳版中。

解决该问题的方法是安装完整版本的VS 2012或者可能通过在VS Shell上方安装Azure SDK来解决。


没有生成任何构件,无论是在_PublishedWebsites文件夹下还是其他我能看到的子文件夹中都没有。如果我比较日志(如果有助于找到解决方案,我可以在这里发布它们),我可以看到TeamCity应该收集文件、转换配置并将它们打包成一个zip文件的所有部分都丢失了。 - qbantek
1
不,我有C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets,但没有C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.targets。这是否意味着我必须在构建服务器上安装VS 2012?我一直在尝试避免这种情况 :/ - qbantek
我敢打赌,这就是你的问题,因为 Web 发布目标包含所有发布代码。如果允许,你可以在 VS Shell 上安装 Azure SDK 来解决问题。 - Richard Szalay
我“终于”在构建服务器上安装了VS 2012(试用版),现在它可以工作了...现在我需要找出:1.试用期到期后会发生什么。2.如果试用期后它还能继续工作,是否仍符合微软的合法使用政策? - qbantek
  1. 我猜是的。
  2. 可能不是,但如果你发现了,请发布。
- Richard Szalay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接