我有一个 ASP.NET 网站的解决方案文件。

当我使用 .NET 4.0 Beta 2 构建解决方案时

“c:\WINDOWS\Microsoft.NET\Framework\v4.0.21006\MSBuild.exe” d:\MyPath\MySolution.sln

一切正常,没有错误。然后我尝试使用 CruiseControl .NET 任务(由服务运行的 msbuild-script)构建相同的解决方案,相同的解决方案失败并显示:

D:\MyPath\MyWebSite.metaproj (,):错误MSB4025:无法加载项目文件。找不到文件“D:\MyPath\MyWebSite.metaproj”。

当然,不存在这样的文件。我猜 *.metaproj 是一个为网站动态生成的类似 .csproj 的 msbuild 文件...

但我不知道如何修复这个错误...我尝试用谷歌搜索metaproj-files,但没有成功。我确实尝试手动制作文件,我插入了一个带有 <Task Name="Rebuild"> 的 <Project> 并且编译没有引发任何错误,但我猜该网站没有编译。

同一台计算机具有 .NET 3.5 和 .NET 4.0 项目以及这两个框架的环境变量。

有帮助吗?

解决方案 4

Visual Studio 2010最终版本修复了此错误。

其他提示

如果您可以摆脱解决方案文件中的项目依赖关系,那么可以解决这个问题。您可以将项目依赖项保留在项目文件中,但将其从解决方案文件中删除。请参阅此链接以获取此信息 回答

我在 tfs 2008 构建服务器上遇到了同样的问题。当我将 tfs builder 服务器配置切换为使用 4.0 msbuild 后,我开始遇到同样的问题。如果我手动运行 msbuild 就可以了,它在日志中显示它正在构建一个 metaproj 文件,但在自动构建过程中它会失败。

拉斯

我阅读CruiseControl讨论并试图像CruiseControl.net一样运行相同的命令,我解决了我的情况,以便我移动

目录名中的空格使得msbuild在Cruise Control下失败!! ??

所以我给出了没有空格的Cruise控制的明确目录。 示例如下。

<Project name="ProjectNameHere"> <workingDirectory>c:\dev\work\ProjectNameHere\WorkDir</workingDirectory> <artifactDirectory>c:\dev\work\ProjectNameHere\Artifacts</artifactDirectory> ...

我首先在my_solution.sln旁边创建了一个my_website.metaproj,如下所示:

<Project DefaultTargets="Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Target Name="Build">
    <Message Text="Building...but nothing to build" />
  </Target>

  <Target Name="Test">
    <Message Text="Testing...but nothing to test." />
  </Target>

  <Target Name="Clean">
    <Message Text="Cleaning...but nothing to clean." />
  </Target>

</Project>

然后它抱怨没找到sgen.exe。我在构建代理上安装了Visual Studio 2010 Beta 2,它看起来现在正在运行。

[编辑] 这实际上并没有完全奏效。它没有将网站项目的依赖关系拉到其bin目录中。

我们最终做的是抓取升级构建过程并使用标准模板的变体重做构建过程。这很好。

在VS2013中,从 DefaultTemplate 切换到 TfvcTemplate.12 为我工作!

TfvcTemplate.12 的一些信息 http://blog.qetza.net/en/2013/10/03/new-features-in-team-build-2013/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top