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

Ran*_*agy 5 msbuild .net-4.0 .net-3.5 visual-studio 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服务器上都能很好地构建.

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

无论哪种方式,这里是服务器解决方案构建订单简化和命名为我认为将解释正在发生的事情.

VS2010/VS2013:

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

此订单正确构建.

但是,当在前面提到的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之前构建)

Client.Common.csproj项目(.NET 3.5)无法构建,因为它无法满足其对Common.csproj(可能是Targeting .NET 3.5)的引用,因为它显然现在间接引用.NET 4.0程序集 - 如它的构建是为了满足Server.DomainModels.csproj项目(.NET 4.0)的引用.

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

先感谢您.

小智 0

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