- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们最近从旧的 CodeDomProvider 升级到名为 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 的新 Roslyn CodeDomProvider。它工作正常,但它在错误的位置查找 csc.exe。 NuGet 包将 exe 放在路径中:
[应用路径]\bin\Debug\roslyn
但是,当我们编译时,我们得到这个错误:找不到路径“[App Path]\bin\Debug\bin\roslyn\csc.exe”的一部分。
请注意,它在错误的位置寻找 exe。它正在 bin\Debug 文件夹中的“bin”文件夹中寻找它。因此,为了使我们的代码能够编译,我们需要将 Roslyn 编译器移动到:[应用路径]\bin\Debug\bin\roslyn\csc.exe
有没有办法告诉 CodeDomProvider Roslyn 编译器所在的位置?这不就是 Roslyn 编译器代码中的一个直接错误吗?
最佳答案
我会看一下 NuGet 包 Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix。我没有使用过它,但它有 10K 的下载量,因为我认为这是很多人都遇到过的问题。我遇到了这个问题,我记得使用反射来解决它,这是我写的代码片段,引用了我基于它的 Stack Overflow 答案,其中 _compiler 是我的 CSharpCodeProvider:
// Little hack here, see http://stackoverflow.com/a/40311406/1676558.
object compilerSettings = typeof(CSharpCodeProvider)
.GetField("_compilerSettings", BindingFlags.Instance | BindingFlags.NonPublic)
.GetValue(_compiler);
FieldInfo compilerSettingsFullPathField = compilerSettings
.GetType()
.GetField("_compilerFullPath", BindingFlags.Instance | BindingFlags.NonPublic);
string desiredCompilerSettingsFullPath = ((string)compilerSettingsFullPathField
.GetValue(compilerSettings))
.Replace(@"bin\roslyn\", @"roslyn\");
compilerSettingsFullPathField.SetValue(compilerSettings, desiredCompilerSettingsFullPath);
关于c# - CodeDomProvider.CompileAssemblyFromSource - 找不到 Roslyn (csc.exe),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42260915/
如果在编译完成后在 .NET 中使用 CodeDomProvider 类,则无法删除输出程序集。我希望能够删除输出程序集。 File.Delete 返回拒绝访问异常。 string asmPath =
我正在尝试使用 ServiceCodeGenerator 和 CodeDomProvider 动态创建服务引用。使用 CodeDomProvider 编译代码时会抛出以下错误。 看起来它只适用于特定的
我刚刚使用 MSDN 中的文章制作了自己的小型自定义 c# 编译器。 但是,当我使用我的示例编译器创建一个新的 Windows 窗体应用程序时,MSDOS 窗口也会出现,如果我关闭 DOS 窗口,我的
CSharpCodeProvider codeProvider = new CSharpCodeProvider(); ICodeCompiler MyCompiler = codeProvider.
var codeProvider = new CSharpCodeProvider(); or var codeProvider = new CodeDomProvider.CreateProvide
我正在使用 System.CodeDom 功能在运行时编译代码,我想知道我是否可以指定一个编译器参数或其他解决方法来以英语语言显示编译器错误,而不是使用系统的默认语言语言。 但是,在 MSDN 文档中
我正在尝试使用 CodeDomProvider 在运行时将一些代码编译到内存中。 我正在编译的代码引用了一个外部程序集,我将其包含在编译代码时使用的参数中。 当我编译到内存并尝试对 Visual St
我正在使用 CodeDomProvider to compile some Linq code并动态执行查询。但是,我遇到了一个非常奇怪的问题。 如果我在生成代码中的 Linq 查询看起来像这样,一切
我有一些源代码,我想使用 Microsoft.CSharp.CSharpCodeProvider 类编译,我想包含特定于调试构建的内容(例如,标有 [Condtional("DEBUG")] 属性)。
我们最近从旧的 CodeDomProvider 升级到名为 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 的新 Roslyn CodeDomPr
我认为发生了一些愚蠢的事情,因为剩余的程序集级属性可以很好地包含在内,但每当声明 AssemblyCopywriteAttribute 或 AssemblyCompanyAttribute 时,都会导
我正在使用 CodeDomProvider、CompilerInfo 和 CompilerParameters 在运行时编译一些 C# 和 VB 代码。它工作得很好,我真的很喜欢能够为我的应用程序添加
CodeDomProvider objCodeCompiler = CodeDomProvider.CreateProvider( "CSharp" ); CompilerParameters obj
我是一名优秀的程序员,十分优秀!