.net 即使没有Microsoft.CodeAnalysis.dll,Analyzer也可以工作

.net 即使没有Microsoft.CodeAnalysis.dll,Analyzer也可以工作,.net,roslyn,.net,Roslyn,我在.NET项目中引用了xunit.analyzers。 此dll依赖于Microsoft.CodeAnalysis.dll 1.2.0.0,正如我使用ildasm确定的那样 我的项目中没有对Microsoft.CodeAnalysis.dll的引用。它不在我的GAC中,它不是此项目中任何其他NuGet包的一部分,也不在/bin文件夹中 当我键入新代码时,上面的分析器通常会发出错误。此外,我在.csproj中使用它作为构建过程的一部分 问题: 这个分析器如何在没有依赖项的情况下工作 如何在构建时

我在.NET项目中引用了
xunit.analyzers
。 此dll依赖于Microsoft.CodeAnalysis.dll 1.2.0.0,正如我使用ildasm确定的那样

我的项目中没有对Microsoft.CodeAnalysis.dll的引用。它不在我的GAC中,它不是此项目中任何其他NuGet包的一部分,也不在/bin文件夹中

当我键入新代码时,上面的分析器通常会发出错误。此外,我在.csproj中使用它作为构建过程的一部分

问题:

  • 这个分析器如何在没有依赖项的情况下工作
  • 如何在构建时满足依赖关系
  • 在TeamCity中运行构建时,当我从.csproj中将xUnit analyzer作为analyzer项删除后,我收到一个错误,该错误立即停止。我在本地没有得到这个错误。这里发生了什么

    CSC错误CS8032:analyzer Xunit的实例。无法从以下位置创建分析器:无法加载文件或程序集Microsoft.CodeAnalysis版本=1.2.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
    按顺序解析程序集依赖项:

  • 本地文件夹
  • csc.exe
    的文件夹
  • /lib开关中提到的文件夹
  • LIB环境变量下的文件夹
  • 回答第3点

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