首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CodeDom CompilerVersion问题

CodeDom CompilerVersion问题
EN

Stack Overflow用户
提问于 2020-01-30 03:26:14
回答 1查看 178关注 0票数 1

我正在使用CodeDom编译我的源代码。我正在尝试这样设置目标框架:

代码语言:javascript
复制
            Dictionary<string, string> providerOptions = new Dictionary<string, string>() { { "CompilerVersion", "v4.0" } };

CodeDomProvider objCodeCompiler = new Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider(providerOptions)

但这不起作用,我得到以下错误:error image

我尝试在app.config中选择CompilerVersion,但这不起作用:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup>
<appSettings>
<add key="aspnet:RoslynCompilerLocation" value="roslyn"/>
</appSettings>
  <system.codedom>
    <compilers>
      <!-- zero or more compiler elements -->
      <compiler
        language="c#;cs;csharp"
        extension=".cs"
        type="Microsoft.CSharp.CSharpCodeProvider, System,   
          Version=2.0.1.0, Culture=neutral,   
          PublicKeyToken=b77a5c561934e089"
        compilerOptions="/optimize"
        warningLevel="4" >
        <providerOption
          name="CompilerVersion"
          value="v4.6" />
      </compiler>
    </compilers>
  </system.codedom>
</configuration>

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-11-19 09:48:33

我的猜测是,您可能正在阅读相关的应用编程接口(更新到您相应的.NET版本):

https://docs.microsoft.com/en-us/dotnet/api/microsoft.csharp.csharpcodeprovider.

但是,您正在使用的包可能是这样的:

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform

简而言之,CSharpCodeProvider (和后端编译器)是不同的。我不确定是否有相关的API文档,但源代码在这里:

https://github.com/aspnet/RoslynCodeDomProvider/blob/a47558d50056fed7b745cfdfebc392e0e82e1b8d/src/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/CSharpCodeProvider.cs

此外,根据此处的第27行,指定CompilerVersion似乎为N/A:

https://github.com/aspnet/RoslynCodeDomProvider/blob/master/src/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/Util/IProviderOptions.cs

我想你的解决方案是要么使用Microsoft.CSharp.CSharpCodeProvider (即new new Microsoft.CodeDom.CSharpCodeProvider(providerOptions)),要么使用Roslyn one并坚持使用API。我想后者可能是最合适的,但最终这取决于您的情况的细微差别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59974229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档