TFS 构建服务器无法使发布配置文件工作:“找不到有效的 AspnetCompilerPath”

Posted

技术标签:

【中文标题】TFS 构建服务器无法使发布配置文件工作:“找不到有效的 AspnetCompilerPath”【英文标题】:TFS Build Server cannot get publish profile to work: "Can't find the valid AspnetCompilerPath" 【发布时间】:2014-06-14 00:00:28 【问题描述】:

我有一个包含大量 Web 项目的解决方案,我希望我的构建服务器自动为每个项目创建包。 我能够(几乎)一切正常。 构建很好,并且将在每个构建上创建包。 但仅当我没有在 MSBuild 参数中指定 PublishProfile 时。 所以它只会插入默认值,而不是预编译我的网站等。 (参数为/p:DeployOnBuild=True /p:IsAutoBuild=True /p:VisualStudioVersion=12.0

但是我想使用我在 Visual Studio 中创建的发布配置文件 (.pubxml)。 每个项目都有一个“Test.pubxml”。 但是当我指定 PublishProfile 参数时,构建将失败并显示以下错误消息(参数为 /p:DeployOnBuild=True;PublishProfile=Test /p:IsAutoBuild=True /p:VisualStudioVersion=12.0):

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets (411): Can't find the valid AspnetCompilerPath

是的,文件Microsoft.Web.Publishing.AspNetCompileMerge.targets 确实存在于该文件夹中。 我可以在我的开发人员机器上部署 Visual Studio 中的项目。

我正在使用以下内容: 视窗服务器 2012 R2 Visual Studio Ultimate 2013 Update 1(安装在构建服务器上) 项目适用于 .Net 4.5.1

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,找到了这个问题,并想出了一个稍微不那么老套的解决方案:

只需添加 /P:Framework40Dir=c:\windows\microsoft.net\framework\v4.0.30319 作为附加的 MSBuild 参数。

无需编辑 .targets 文件或设置任何其他内容。为我工作,所以我只是这样做:

msbuild MyWebProject.csproj /T:Package /P:PublishProfile=MyProfile /P:Framework40Dir=(as above)

我使用它将 Web Deploy 包构建到我选择的子文件夹中 - 如果没有配置文件,它将转到 obj/debug/package。谁使用obj?布莱尔:)

【讨论】:

【参考方案2】:

我遇到了同样的错误,并通过一些技巧解决了它。

我编辑了 Microsoft.Web.Publishing.AspNetCompileMerge.targets 文件。

找到 AspnetCompilerPath 节点并将 $(Framework40Dir) 替换为 C:\Windows\Microsoft.NET\Framework\v4.0.30319 .

我想你可以在文件的前面设置 $(Framework40Dir) 的值。

我建议在更改文件之前创建文件的备份(文件顶部还有一条注释建议这样做)。

我猜正确的解决方案是设置一些环境变量或注册表值。

【讨论】:

这行得通! (显然 $(Framework40Dir) 被设置为 msbuild 目录而不是 .NET 框架)。

以上是关于TFS 构建服务器无法使发布配置文件工作:“找不到有效的 AspnetCompilerPath”的主要内容,如果未能解决你的问题,请参考以下文章

CMake 找不到源文件,但在 TFS 构建定义中的 CMakeLists.txt 中未指定文件

TFS 签入错误 - 找不到文件

TFS Build 找不到 Grunt

在单元测试用例的 TFS 构建中找不到路径的一部分

TFS 2015 发布管理 - 工件类型:文件共享错误:System.IO.FileNotFoundException:找不到指定的文件

Visual Studio 2017 - 团队资源管理器构建“找不到页面”