如何实际引用 roslyn 运行时代码分析?

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

所以我想做一些需要检查我的解决方案文件和项目的事情。 Roslyn 似乎是可行的方法 - 所以我找到了一些示例代码:

  MSBuildLocator.RegisterDefaults();
  var workspace = MSBuildWorkspace.Create();
  var sln = await workspace.OpenSolutionAsync(solutionPath);

将以下内容放入 csproj 中:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="7.0.0" />
    <PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="4.7.0" />
    <PackageReference Include="Microsoft.Build.Locator" Version="1.4.1" />
</ItemGroup>

然后按运行 - 它构建得很好 - 然后根本不起作用 -

Could not load file or assembly 'Microsoft.CodeAnalysis.CSharp.Workspaces, Version=4.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified

尽管我可能用谷歌搜索,但我找不到解决方案 - 我发现了一些内容,说是的,只需添加 msbuild 定位器,但它什么也没做。

有什么想法可以解决这个问题吗?

c# .net-core roslyn roslyn-code-analysis
1个回答
0
投票

实际上,我只需添加以下内容即可使其工作:

    <PackageReference Include="Microsoft.CodeAnalysis.Csharp.Workspaces" Version="4.7.0" />
    <PackageReference Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="4.7.0" />
    <PackageReference Include="Microsoft.CodeAnalysis.Features" Version="4.7.0" />
    <PackageReference Include="Microsoft.CodeAnalysis.Csharp.Features" Version="4.7.0" />
    <PackageReference Include="Microsoft.CodeAnalysis.VisualBasic.Features" Version="4.7.0" />
    <PackageReference Include="Microsoft.Net.Compilers.Toolset" Version="4.7.0" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="7.0.0" />

不知道为什么它们没有作为依赖项出现..但是嘿

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