ASP.NET 网站项目使用 TFS 2013 构建自动部署

标签 asp.net tfs msbuild msdeploy web-site-project

我有一个 ASP.NET Webforms 网站项目(请注意,这不是 WebApplication 项目,即没有 .csproj)。

我想自动部署文件系统到我们的网络共享。

我创建了一个配置文件,所以有 website.publishproj 文件和配置文件 xml。

我尝试在构建定义的 MSBuild 参数中添加这个:

website.publishproj /p:DeployOnBuild=true /p:PublishProfile=MyDevProfile /p:VisualStudioVersion=12.0

我收到这个错误:

MSBUILD : error MSB1008: Only one project can be specified. Switch: website.publishproj

知道我做错了什么吗?我相信这与网站项目类型有关。

这是我读到的:How to use command line msbuild to deploy VS2012 Web Site project without precompiling it?

命令如下:

C:\Program Files (x86)\MSBuild\12.0\bin\amd64\MSBuild.exe /nologo /noconsolelogger "E:\Builds\1\TP1\MyWebsite_Dev\src\Websites\MyWebsite\MyWebsite.sln" /nr:False /fl /flp:"logfile=E:\Builds\1\TP1\MyWebsite_Dev\src\Websites\MyWebsite\MyWebsite.log;encoding=Unicode;verbosity=normal" /p:SkipInvalidConfigurations=true website.publishproj /p:DeployOnBuild=true /p:PublishProfile=DropToDemoProfile /p:VisualStudioVersion=12.0 /m /p:OutDir="E:\Builds\1\TP1\MyWebsite_Dev\bin\" /p:VCBuildOverride="E:\Builds\1\TP1\MyWebsite_Dev\src\Websites\MyWebsite\MyWebsite.sln.vsprops" /dl:WorkflowCentralLogger,"C:\Program Files\Microsoft Team Foundation Server 12.0\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Normal;BuildUri=vstfs:///Build/Build/35;IgnoreDuplicateProjects=False;InformationNodeId=13;TargetsNotLogged=GetNativeManifest,GetCopyToOutputDirectoryItems,GetTargetPath;LogWarnings=True;TFSUrl=http://mytfs:8080/tfs/colletionname;"*WorkflowForwardingLogger,"C:\Program Files\Microsoft Team Foundation Server 12.0\Tools\Microsoft.TeamFoundation.Build.Server.Logger.dll";"Verbosity=Normal;" /p:BuildId="7d23530d-7349-406f-98b7-5d4f0b9f4101,vstfs:///Build/Build/35" /p:BuildLabel="MyWebsite_Dev_20141122.13" /p:BuildTimestamp="Sun, 23 Nov 2014 01:22:05 GMT" /p:BuildSourceVersion="LMyWebsite_Dev_20141122.13@$/TP1" /p:BuildDefinition="MyWebsite_Dev"

最佳答案

您正在尝试将解决方案 (MyWebsite.sln) 和项目 (website.publishproj) 作为同一个 MSBuild 命令的一部分同时构建,至少根据正在传递的参数。

您可以运行 msbuild website.publishproj/pp:website.pp.publishproj 以查看可以在 website.pp.publishproj 中调用哪些目标或要覆盖哪些属性.

您可以运行 set MSBUILDEMITSOLUTION=true && msbuild MyWebsite.sln 来查看您可以在 MyWebsite.sln.metaprojMyWebsite.metaproj< 中调用哪些目标 或要覆盖的属性。

你的 DeployOnBuild 命令没问题,应该可以工作,我猜你的 TFS 构建配置指向 .sln 并传递 website.publishproj 作为参数而不是构建的主要目标,因此要么重新指向它以直接构建 .publishproj 要么......好吧,似乎没有任何替代方案,你可以尝试添加新的配置并使用新的 AspNetConfigurationMyDevProfile.AspNetCompiler.TargetPath 编辑 .sln 但这样你只是在自找麻烦。

关于ASP.NET 网站项目使用 TFS 2013 构建自动部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084125/

相关文章:

asp.net - 如何使用 Release模式将 Web 应用程序部署到 Azure

asp.net - 如何使用 StylePlaceHolder 和 Style 控件控制 ASP.NET 主题中的样式表

asp.net - 将异常转换为 Application_Error 中的 HTTP 404 响应

visual-studio - 为什么当我没有更改任何内容时 TFS 显示所有文件的未决更改?

.net - 为什么MSBuild无法像我期望的那样复制

asp.net - 在 IIS 中发布 CSS 文件

python - 使用 Python 实现 TFS 自动化

visual-studio-2010 - Visual Studio Intellisense无法正常工作

msbuild - TeamCity 和构建参数

.net - 代码分析改进