我正在尝试在TFS 2012上发布vs2013 asp.net webapp(解决方案中唯一的项目)。在任何开发人员框中,它下载,爆炸并解析nuget包(使用nuget 2.8.1)并运行Web部署发布就好了。
但是我无法在TFS盒子上复制它。 MSBuild没有找到nuget包,也没有运行Web Deploy Publish。
1。的NuGet
从csproj
调用 <PropertyGroup>
<PreBuildEvent>$(SolutionDir)..\..\..\tools\nuget\nuget.exe restore</PreBuildEvent>
</PropertyGroup>
根据here的建议。没有.nuget解决方案级别目录,nuget.exe和nuget.config实现了tfs文件夹层次结构。这在开发盒上工作正常。为什么它不能在构建服务器上运行?
2。 Web部署发布
msbuild日志摘录:
Run MSBuild for Project
Initial Property Values
...
CommandLineArguments = /p:SkipInvalidConfigurations=true /p:DeployOnBuild=True /p:PublishProfile=dev01 /p:AllowUntrustedCertificate=True /p:UserName=myDomainUsername /p:Password=myPassword
....
DeployOnBuild = False
....
注意DeployOnBuild = False,不应该被参数覆盖吗?
配置:
开发者框
Visual Studio 2013更新2,webdeploy 3.6(最新),Web Deploy Publish基于.pubxml发布配置文件。
vs项目文件摘录,以防相关:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup>
<PreBuildEvent>$(SolutionDir)..\..\..\tools\nuget\nuget.exe restore</PreBuildEvent>
</PropertyGroup>
构建定义
构建定义适用于解决方案(.sln)而不是项目(.csproj),参数如下:
/p:DeployOnBuild=True /p:PublishProfile=dev01 /p:AllowUntrustedCertificate=True /p:UserName=myDomainUser /p:Password=myPassword
TFS 2012专栏
安装了WebDeploy 3.6(最新版本)。
在我的方法中可能存在配置和概念错误的组合,真的很感激任何输入!
答案 0 :(得分:0)
您可能需要在构建服务器上启用Package Restore。确保你有:
答案 1 :(得分:0)
Web部署发布不发布 - 按照此处MSBuild not triggering WebDeploy中的说明解决问题 - 唯一的区别是 我将Web和WebApplications目录从vs2013开发盒上的\ v12.0复制到TFS 2012上的\ v11.0