我有一个包含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也没有抱怨!)。我只在构建日志中看到了这个:
唯一对解决方案进行的更改是在 .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。
我们升级到了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。