即使没有Microsoft.CodeAnalysis.dll,分析器也可以工作

时间:2019-03-08 17:30:11

标签: .net roslyn

我在.NET项目中引用了xunit.analyzers。 我使用ildasm确定,该dll取决于Microsoft.CodeAnalysis.dll 1.2.0.0

我在项目中没有引用Microsoft.CodeAnalysis.dll。它不在我的GAC中,也不在该项目中的任何其他NuGet软件包中,也不在/ bin文件夹中。

当我键入新代码时,上述分析器通常会发出错误。另外,我在.csproj中将其用作构建过程的一部分。

问题:

  1. 该分析器如何在没有依赖项的情况下正常工作?
  2. 在构建时如何满足依赖性?
  3. 在TeamCity中运行构建时,出现错误,一旦从.csproj中删除xUnit分析器作为分析器项,该错误就会停止。我在本地未收到此错误。这是怎么回事?

    CSC error CS8032: An instance of analyzer Xunit.Analyzers cannot be created from: Could not load file or assembly Microsoft.CodeAnalysis Version=1.2.0.0

1 个答案:

答案 0 :(得分:0)

回答第1点和第2点

看来我的本地版本使用C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\csc.exe进行编译,该文件夹在其文件夹中有Microsoft.CodeAnalysis.dll所需的适当版本的xunit.analyzer

但是,构建服务器使用C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe,该版本的版本低于所需的版本,这会导致构建中断。

仅供参考和上下文,csc.exe按顺序解析程序集依赖项:

  1. 本地文件夹
  2. csc.exe的文件夹
  3. / li开关中提到的
  4. 文件夹
  5. LIB环境变量下的文件夹

答案3

假设,因为当我在本地编写代码时,分析器与Roslyn合作时,它也可以满足上面相同Roslyn文件夹中的依赖项。这是构建服务器上的争论点。