TFS Build Server“无法找到TeamBuild发布网站的有效AspnetCompilerPath”

时间:2014-08-18 17:43:28

标签: tfs msbuild web-site-project publish-profiles

我在使用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' 在Tar​​get' 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.

非常感谢帮助解决这个问题.....谢谢。

3 个答案:

答案 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)。