Roslyn编译失败,但与Visual Studio兼容

MHGameWork

我正在尝试加载现有的C#项目并使用Roslyn分析其源文件之一。但是,在编译源文件时,出现无意义的编译错误,并且在使用Visual Studio进行编译时不存在这些错误。(代码也可以正常运行)

谁能帮我诊断这个问题?

用于编译文件的部分代码:

var oriSln = workspace.OpenSolutionAsync(@"absolutepath.sln").Result;
var oriProject = oriSln.Projects.First(p => p.Name == "projectname");
var doc = oriProject.GetDocument(docId);
var model = doc.GetSemanticModelAsync().Result;
var diag = model.GetDiagnostics(); // has strange errors

错误:

thefile.cs(36,68): error CS0518: Predefined type 'System.Void' is not defined or imported
thefile.cs(40,74): error CS0518: Predefined type 'System.Void' is not defined or imported
thefile.cs(40,50): error CS1503: Argument 1: cannot convert from 'float' to 'int'
thefile.cs(41,50): error CS1503: Argument 1: cannot convert from 'float' to 'int'
thefile.cs(51,50): error CS1503: Argument 2: cannot convert from 'float' to 'int'
thefile.cs(58,58): error CS1503: Argument 2: cannot convert from 'float' to 'int'
thefile.cs(130,40): error CS0518: Predefined type 'System.ValueType' is not defined or imported
thefile.cs(168,55): error CS0246: The type or namespace name 'Vector3' could not be found (are you missing a using directive or an assembly reference?)
thefile.cs(158,38): warning CS0168: The variable 'ex' is declared but never used
thefile.cs(7,1): hidden CS8019: Unnecessary using directive.
thefile.cs(6,1): hidden CS8019: Unnecessary using directive.

该解决方案由大约30个项目组成,目标项目引用了其中一些项目,还引用了一些第三方,其中一个包含Vector3

MHGameWork

我找到了解决此问题的方法。我从解决方案中引用的其他项目之一没有加载任何MetadataReferences,因此缺少mscrolib。我认为这会导致从属项目抛出这些错误。

至于为什么它没有加载MetadataReferences,我不完全确定为什么它没有加载任何MetadataReferences。我发现csproj文件具有默认配置Debug | AnyCPU,该项目不存在该项目,因此我将其更改为Debug | x86。然后,它正确加载了所有引用,而前面提到的编译错误现在消失了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected]il.com 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Visual Studio-vdproj不兼容

Visual Studio 2012安装失败:程序兼容模式打开

Visual Studio 2013安装失败:程序兼容模式已打开(Windows 10)

“此项目与Visual Studio的当前版本不兼容”

如何使Visual Studio 2015 C ++项目与Visual Studio 2010兼容?

与Visual Studio的Rust和C兼容性

Azure.CloudService 2.7与Visual Studio 2015不兼容

Visual Studio 2015(Windows 10)中的.NET本机编译失败

在Visual Studio中使用自编译的Roslyn?

在Visual Studio 2013中使用Roslyn编译器

如何在Visual Studio 2015中使用roslyn C#编译器?

如何在当前Visual Studio主机内部的Visual Studio扩展中调试用Roslyn编译的代码?

Visual Studio Mac与dotnet core 2不兼容

Visual Studio 2017兼容性与Boost 1.64.0 / 1.63.0问题

Visual Studio 2017选项:对每个项目使用托管兼容模式

Roslyn是Visual Studio 2017的默认编译器吗

数据工具和Visual Studio版本的兼容性

Visual Studio 2019开放解决方案文件不兼容

Visual Studio 2010的兼容性问题

Visual Studio 2012 Premium与Windows Server 2008的兼容性

Visual Studio 2013与MS SQL Server 2014不兼容

Visual Studio 2015 SSIS兼容性

Visual Studio 2015 / C#6 / Roslyn无法在PCL项目中编译XML注释

哪个Oracle版本与Visual Studio 2010兼容?

Visual Studio产品版本兼容性(例如,快速,最终)

使Visual Studio XAML输出与System.Windows.Markup.XamlReader兼容

Visual Studio代码二进制兼容性

Visual Studio 测试代理 兼容 Server 2016

Visual Studio 2012 与 TFS 2013 的兼容性