MSBuild忽略本地项目引用,但Visual Studio工作正常

时间:2018-04-13 17:27:09

标签: c# visual-studio msbuild csc

我有一个.Net / C#解决方案,其中包含两个项目:

  • Web项目(ASP.Net Web API)
  • 单元测试项目(C#等)

单元测试项目引用Web项目,并使用测试框架对其执行一些单元测试。

在Visual Studio 2017中,所有这些构建都完美运行,web api运行完美,我的单元测试也是如此。

当我来构建是通过命令行(本地或自己的构建服务器)使用MSBuild时,单元测试项目报告......

  

错误CS0103:当前上下文中不存在名称“WebApi”[c:\ Code \ UnitTests.csproj]

......根本找不到WebApi项目!

两个项目都配置为.Net V4.5.2和“任何CPU”。

我尝试了各种各样的方法:

  • MsBuild的版本
  • C#语言的版本(如果C#6导致问题,因为msbuild并不总是支持C#V5)

我正在使用

构建它们
  

c:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ msbuild.exe“C:\ Code \ MyProject.sln / t:Rebuild / p:Configuration = Release

此外,单元测试项目可以毫无问题地引用其他.Net类库和其他ASP.NET Web API项目,因此它必须与ASP.NET Web API项目而不是单元测试项目本身有关。

我注意到当msbuild编译单元测试项目时,它会显示 csc.exe 编译部分的命令行,它将包含对其他项目的所有引用,但从不包括Web API项目,因此msbuild必须:

  • 认为不需要Web Api引用并忽略它,或
  • 无法在csproj文件中检测到它(但VS检测到它完全正常)

更新:Web API项目已于2 - 3年前添加到解决方案中(可能是VS2013 / 5),但本周使用VS 2017添加了单元测试项目,但我也尝试了VS2015并出现了相同的错误。

还有其他想法吗?

0 个答案:

没有答案