5

我有一个带有 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 (,): errorMSB4025: 无法加载项目文件。找不到文件“D:\MyPath\MyWebSite.metaproj”。

当然,没有这样的文件。我猜 *.metaproj 是为网站动态生成的类似 .csproj 的 msbuild 文件...

但我不知道如何解决这个错误......我试图谷歌 metaproj-files 没有运气。我确实尝试手动制作文件,我插入了一个 <Project> 与 <Task Name="Rebuild"> 并且编译没有引发任何错误,但我猜该站点没有编译。

同一台机器具有两个框架的 .NET 3.5 和 .NET 4.0 项目和环境变量。

4

6 回答 6

3

如果您可以摆脱解决方案文件中的项目依赖关系,则有一种解决方法。您可以将项目依赖项保留在项目文件中,但将它们从解决方案文件中删除。请参阅此链接以获取此
答案

于 2009-10-28T17:55:46.973 回答
1

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

拉斯

于 2009-10-26T14:46:08.143 回答
1

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

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

所以我明确地给出了没有空格的巡航控制目录。下面的例子。

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

于 2010-01-24T20:41:12.803 回答
1

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

于 2010-04-26T13:37:25.290 回答
0

我首先在 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 目录中。

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

于 2009-10-27T19:13:49.540 回答
0

在 VS2013 中,从DefaultTemplate切换到TfvcTemplate.12对我有用!

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

于 2015-03-12T11:56:44.547 回答