VS2010 / 2013成功的MSBuild失败 - 混合3.5和4.0 - 为什么?

时间:2014-01-29 19:56:37

标签: visual-studio .net-4.0 msbuild .net-3.5 tfs2010

我在工作中遇到以下情况,并希望听到一些建议,因为我几乎没有想法而且忘记了。

我有一个解决方案,其中包含我们的服务器端项目 - 一些Web应用程序要部署到IIS以及一些带有逻辑的类库。它最初是在VS2010的.NET 3.5下制作的(据我所知)。该解决方案随着时间的推移而升级,现在包含一些针对.NET 4.0的项目。

该解决方案在我的机器上运行时与VS2010和VS2013(我现在大部分都在使用)一起构建并按预期工作 - 一台32位Windows 7 SP1机器,安装了完整的VS2013等。解决方案也是如此通过在我的机器上使用命令行MSBuild(32位)来完美构建。

从我们的64位TFS 2010服务器构建时,构建失败引用从.NET 3.5程序集到.NET 4.0基础程序集(如mscorlib等)的间接引用。

客户端解决方案(带有WPF“shell”和更多类库逻辑项目)以及两者之间的共享项目都是.NET 3.5,并且在我的机器和TFS服务器上都能很好地构建。

我在阅读THIS后到目前为止注意到的是TFS服务器上的构建顺序不同。我尝试了所提到的主要/第一个问题的解决方法,但到目前为止没有任何帮助。没有尝试过第二次(强制编译32位或者如上所述的影响),但我要去。

无论哪种方式,这里是服务器解决方案构建订单简化并命名为我认为可以解释发生了什么。

VS2010 / VS2013:

  1. Common.csproj // .NET 3.5“客户端”和“服务器”解决方案之间的共享/公共代码。
  2. Server.Common.csproj // .NET 4.0服务器端项目只有共享/公共代码。参考文献Common。
  3. Client.Common.csproj // .NET 3.5客户端项目只有共享/公共代码。参考文献Common。
  4. Server.DomainModels.csproj // .NET 4.0服务器端类库。引用Server.Common和Common。
  5. Agents.csproj // .NET 3.5客户端类库,用于调用服务器端Web应用程序项目,是一种代理。引用Client.Common和Common。
  6. 此订单正确构建。

    但是,在上述TFS2010服务器版本上运行时,我会收到此订单:

    1. Server.DomainModels.csproj(上面是#4) - > 1. Common.csproj(调用以满足上面的引用)。 - > 2. Server.Common.csproj(也调用以满足上面的引用)。
    2. '正确/原始'订购Common.csproj(已在上面构建,#1之前)
    3. '正确/原始'订购Server.Common.csproj(已在上面构建,#2之前)
    4. Agents.csproj(之前#5) - > 1. Client.Common.csproj(之前的#3和原始顺序中的#5之前构建)
    5. Client.Common.csproj项目(.NET 3.5)无法构建,因为它无法满足其对Common.csproj(可能是Targeting .NET 3.5)的引用,因为它显然现在间接引用.NET 4.0程序集 - 因为它是为满足Server.DomainModels.csproj项目( .NET 4.0 )的引用而构建的。

      这对我来说没有意义,但似乎会发生什么。 我很感激有关此问题的任何建议或建议。

      提前谢谢。

2 个答案:

答案 0 :(得分:1)

所以,我再次浏览了链接的博客文章,这次也是评论。一条评论指的是msbuild仍然关注解决方案定义的顺序,而不是文章所说明的内容。

我试过了,将Common和Server.Common移到了顶端 - 尤里卡!它现在可以在tfs的msbuild上正确构建。

我的一些转换只在运行tfs时仍然失败,但至少我更接近完成它。

答案 1 :(得分:0)

如果可能,我建议您将所有项目升级到4.0。它不是对你的问题的解释,但它可能是一个解决方案。

相关问题