即使没有Microsoft.CodeAnalysis.dll,Analyzer也能正常工作

问题描述 投票:0回答:1

我在.NET项目中引用了xunit.analyzers。这个dll取决于Microsoft.CodeAnalysis.dll 1.2.0.0,因为我已经确定使用ildasm。

我的项目中没有引用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
.net roslyn
1个回答
1
投票

对第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按顺序解析程序集依赖项:

  1. 本地文件夹
  2. qazxswpoi的文件夹
  3. / lib开关中提到的文件夹
  4. LIB环境变量下的文件夹

答案第3点

我想,当我在本地编写代码时,分析器与Roslyn合作,它也可以满足上面相同Roslyn文件夹的依赖关系。这是构建服务器上的一个有争议的问题。

© www.soinside.com 2019 - 2024. All rights reserved.