【发布时间】:2014-07-11 20:47:47
【问题描述】:
我正在尝试在 TFS 2012 上发布 vs2013 asp.net webapp(解决方案中的唯一项目)。在任何开发人员框中,它下载、分解和解析 nuget 包(使用 nuget 2.8.1)并运行 Web部署发布就好了。
但是我无法在 TFS 机器上复制它。 MSBuild 没有找到 nuget 包,也没有运行 Web Deploy Publish。
1.努吉特
从 csproj 调用
<PropertyGroup>
<PreBuildEvent>$(SolutionDir)..\..\..\tools\nuget\nuget.exe restore</PreBuildEvent>
</PropertyGroup>
按照here 中的建议。没有 .nuget 解决方案级目录,nuget.exe 和 nuget.config 位于 tfs 文件夹层次结构中。这在开发盒上运行良好。为什么它在构建服务器上不起作用?
2。网络部署发布
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(最新)。
我的方法中可能存在配置和概念错误的组合,非常感谢任何输入!
【问题讨论】:
标签: tfs msbuild visual-studio-2013 nuget webdeploy