我在使用Team Build进行TFS2013时出现问题,然后进行构建然后发布网站 当我使用VS2013和(右键单击)发布网站从我的开发机器发布网站时,一切正常 网站项目的选项。我在TFS2013构建服务器上收到以下错误:
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web \ Transform \ Microsoft.Web.Publishing.AspNetCompileMerge.targets(421,5):错误:
**Can't find the valid AspnetCompilerPath** [C:\Builds\3\Web\Development to WebDev\Sources\Web\Website\Development\ASP.NET\App\website.publishproj]
Done Building Project "C:\Builds\3\Web\Development to WebDev\Sources\Web\Website\Development\ASP.NET\App\website.publishproj" (default targets) -- FAILED.
**
我在Team Build设置中使用了以下MSBuild参数 /p:DeployOnBuild=true;VisualStudioVersion=12.0;DeployTarget=WebFileSystemPublish;PublishProfile=Development
开发Web转换在构建服务器上运行良好,以响应' PublishProfile =开发'论点。该 Web.Config文件已针对我们的开发环境进行了适当的转换。 如MSBuild Argument中所述,我使用FileSystem发布选项并希望保持这种方式。
我修改了Build Server' C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web \ Transform \ Microsoft.Web.Publishing.AspNetCompileMerge.targets' 在Target' ConfigureForAspNetPreCompileMerge'中记录一些属性,如下所示:
<Message Text="[TargetFrameworkVersion]: $(TargetFrameworkVersion)" />
<Message Text="[AspnetCompilerPath]: $(AspnetCompilerPath)" />
<Message Text="[Framework40Dir]: $(Framework40Dir)" />
<Message Text="[MSBuildToolsRoot]: $(MSBuildToolsRoot)" />
<Message Text="[MSBuildRuntimeVersion]: $(MSBuildRuntimeVersion)" />
将以下信息记录到Team Build的website.log文件中: ConfigureForAspNetPreCompileMerge:
[TargetFrameworkVersion]:v4.0 [AspnetCompilerPath]: [Framework40Dir]:C:\ Program Files(x86)\ MSBuild \ v4.0.30319 [MSBuildToolsRoot]:C:\ Program Files(x86)\ MSBuild \ [MSBuildRuntimeVersion]:4.0.30319
[Framework40Dir]与我的本地计算机在同一MSBuild目标上记录相同数据不同:
12所取代;任务参数:Text = [TargetFrameworkVersion]:v4.0 12&gt;
[TargetFrameworkVersion]:v4.0 12&gt;任务 参数:Text = [AspnetCompilerPath]:12&gt; [AspnetCompilerPath]: 12所取代;任务参数:Text = [Framework40Dir]: C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 12&gt; [Framework40Dir]: C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 12&gt;任务 参数:Text = [MSBuildToolsRoot]:C:\ Program Files(x86)\ MSBuild \ 12&gt; [MSBuildToolsRoot]:C:\ Program Files(x86)\ MSBuild \ 12&gt;任务 参数:文本= [MSBuildFrameworkToolsRoot]: C:\ Windows \ Microsoft.NET \ Framework \ 12&gt;
[MSBuildFrameworkToolsRoot]:C:\ Windows \ Microsoft.NET \ Framework \ 12&gt;
任务参数:Text = [MSBuildRuntimeVersion]:4.0.30319 12&gt;
[MSBuildRuntimeVersion]:4.0.30319
[Framework40Dir]的TeamBuild值为:&#39; C:\ Program Files(x86)\ MSBuild \ v4.0.30319&#39; VS 我的本地DEV机器:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319
这似乎很不寻常。
我还更改了TeamBuild文件:&#39; C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web \ Transform \ Microsoft.Web.Publishing.AspNetCompileMerge.targets&#39; 手动将Framework40Dir的属性设置为&#39; C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319&#39; 但是当它到达那一点时似乎挂起整个TeamBuild进程并永远运行Team Build直到我手动停止它。
这是与此相同的解决方案:TFS Build Server cannot get publish profile to work: "Can't find the valid AspnetCompilerPath" 但它对我不起作用。这个问题与我的问题相同。
构建服务器是TFS2013.3的最新版本。我没有在那台机器上安装Visual Studio 2013,而且非常喜欢 不要那样做。我已经读过TFS Team Builds不需要VS.
非常感谢帮助解决这个问题.....谢谢。
答案 0 :(得分:2)
我会将vs2013安装到构建服务器上,它会消除大部分问题,允许您针对单元测试运行代码覆盖,只要您在开发计算机上拥有有效许可证,就不需要许可证。我知道这不是你想要的答案。
答案 1 :(得分:2)
我找到了秘密酱。我需要在我的website.publishproj文件项目部分中将ToolsVersion设置为&#34; 12.0&#34;。
我还需要将ToolsVersion设置为&#34; 12.0&#34;在DefaultTemplate.xaml&#39;运行MSBuild for Project&#39;本文详述的工作流程活动。
Building Visual Studio 2013 solutions with your TFS 2010 / 2012 Build Templates
TeamBuild现在的工作方式与VS2013 Publish网站类似......但整个过程所需的时间几乎是我们之前使用的以前的Web部署项目的两倍。我将不得不调查是否有某种方法可以加快发布流程。
希望这可以帮助其他人解决这个问题。
答案 2 :(得分:2)
请使用此路径C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319更改$(Framework40Dir)。