我有一个 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.metaproj
和 MyWebsite.metaproj< 中调用哪些目标
或要覆盖的属性。
你的 DeployOnBuild
命令没问题,应该可以工作,我猜你的 TFS 构建配置指向 .sln
并传递 website.publishproj
作为参数而不是构建的主要目标,因此要么重新指向它以直接构建 .publishproj
要么......好吧,似乎没有任何替代方案,你可以尝试添加新的配置并使用新的 AspNetConfiguration
和 MyDevProfile.AspNetCompiler.TargetPath
编辑 .sln
但这样你只是在自找麻烦。
关于ASP.NET 网站项目使用 TFS 2013 构建自动部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084125/