我正在尝试构建我的解决方案,并将Web应用程序打包成要部署的Web部署(.zip)包。
我已使用以下MSBuild参数添加了 Visual Studio Build 步骤:
/ p:DeployOnBuild = True / p:WebPublishMethod = Package / p:PackageAsSingleFile = true / p:PackageLocation =" $(build.artifactstagingdirectory)\"
我已设置复制和发布构建工件步骤,将所有.zip文件复制到drop文件夹。
构建成功完成但没有任何内容复制到drop文件夹,因为没有创建.zip包。
因此,当我查看TFS服务器时,' a'文件夹是空的' drop'夹。在'' folder是包含PrecompiledWeb文件夹的解决方案目录。不确定是什么,但它看起来不像部署包(并且它不是.zip)。
有什么想法吗?
答案 0 :(得分:3)
我在使用VSTS和TFS 2015.2.1的VS2015 MVC Web应用程序上尝试过相同的操作。我不得不对Visual Studio构建中的Build参数稍作修改。那就是删除/ p中的尾随“\”:PackageLocation =“$(build.artifactstagingdirectory)\”。
这是我传递给Visual studio构建步骤的参数
/p:DeployOnBuild=True /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:PackageLocation="$(build.artifactstagingdirectory)"
然后我使用了Copy和Published Build Artifacts(在VSTS中不推荐使用Copy task and Publish task而不是这个任务),如下所示
这给我输出如下。
答案 1 :(得分:1)
首先建议您在构建代理中手动远程,并通过带参数的MSBuild命令行构建项目,以查看项目是否正确构建。
这将缩小与构建代理或构建定义上的环境相关的问题。
您应该直接使用/p:PackageLocation=$(build.stagingDirectory
此外,因为您有多个在Web应用程序中引用的程序集。还请仔细检查以正确顺序构建或正确引用的依赖关系。
答案 2 :(得分:0)
确保已安装Visual Studio的ASP.NET开发工作负载。
如果DeployOnBuild
无效,则可能需要使用VS设置工具安装ASP.NET开发“工作负载”。
有特定的.target文件,如果它们不存在,则会导致这些参数被静默忽略。安装此程序将添加那些.targets并使参数变为活动状态,从而允许创建.zip。
对我来说(VS 2017)缺少但需要的相关目标文件(或者无论如何,其中一个)是:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ Web \ Microsoft.Web.Publishing.targets
如果缺少该组件,则需要按上述步骤安装,如果已安装,则存在另一个问题。 ;)