我有一个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文件没有运气。我确实尝试手动制作文件,我插入了< Project> < Task Name =“Rebuild”>并且编译没有引起任何错误,但我猜该网站没有编译。
同一台机器具有两个框架的.NET 3.5和.NET 4.0项目和环境变量。
答案 0 :(得分:2)
如果您可以摆脱解决方案文件中的项目依赖关系,那么可以解决这个问题。您可以将项目依赖项保留在项目文件中,但将其从解决方案文件中删除。请参阅此链接 Answer
答案 1 :(得分:1)
我遇到了与tfs 2008构建服务器相同的问题。一旦我将tfs构建器服务器配置切换为使用4.0 msbuild,我就开始遇到同样的问题。如果我手动运行msbuild就好了,它在日志中说它构建了一个metaproj文件,但是在自动构建过程中它失败了。
拉斯
答案 2 :(得分:1)
我阅读CruiseControl讨论并试图像CruiseControl.net一样运行相同的命令,我解决了我的情况,以便我移动
目录名中的空格使得msbuild在Cruise Control下失败!! ??
所以我给出了没有空格的Cruise控制的明确目录。 示例如下。
<Project name="ProjectNameHere">
<workingDirectory>c:\dev\work\ProjectNameHere\WorkDir</workingDirectory>
<artifactDirectory>c:\dev\work\ProjectNameHere\Artifacts</artifactDirectory>
...
答案 3 :(得分:1)
Visual Studio 2010最终版本修复了此错误。
答案 4 :(得分: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目录中。
我们最终做的是抓取升级构建过程并使用标准模板的变体重做构建过程。这很好。
答案 5 :(得分:0)
在VS2013中,从 DefaultTemplate 切换到 TfvcTemplate.12 为我工作!
有关 TfvcTemplate.12 的一些信息http://blog.qetza.net/en/2013/10/03/new-features-in-team-build-2013/