对于.net 3.5,我将v3.5传递给CSharpCodeProvider,当我在v4.5应用程序中将v4.5传递给CSharpCodeProvider时,我得到了InvalidOperationException“无法找到编译器可执行文件csc.exe”。
有人知道这是怎么回事吗,我做错什么了?
要复制的代码。。。
using Microsoft.CSharp;
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
namespace Console1
{
class Program
{
static void Main(string[] args)
{
var options = new Dictionary<string, string>{{"CompilerVersion", "v4.5"}};
var cs = new CSharpCodeProvider(options);
var compilerParams = new CompilerParameters();
var r = cs.CompileAssemblyFromSource(compilerParams , "namespace ns { class program { public static Main(string[] args) { System.Console.WriteLine(\"Hello world\"); } } }");
}
}
}发布于 2012-11-06 16:38:51
这是通过设计实现的,当您使用Windows导航到c:\windows\microsoft.net\framework时,您可以看到这一点。注意,您将只看到一个名为v4.0.30319的子目录,没有v4.5子目录。换句话说,.NET 4.5是Version4.0的一个真正的就地更新,C# v5编译器取代了v4编译器。
您需要指定"v4.0“。
https://stackoverflow.com/questions/13253967
复制相似问题