所以我想做一些需要检查我的解决方案文件和项目的事情。 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 定位器,但它什么也没做。
有什么想法可以解决这个问题吗?
实际上,我只需添加以下内容即可使其工作:
<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" />
不知道为什么它们没有作为依赖项出现..但是嘿