C# 是否可以从带有CSharpCodeProvider的.net3.5应用程序中以.net4编译器为目标?
我正在尝试使用.net 3.5应用程序中的CSharpCodeProvider编译.cs文件,我想将.net4编译器作为目标,但遇到以下错误“无法找到编译器可执行文件csc.exe”。我已经安装了.net4。下面是我使用的代码,为了简洁起见,省略了一些行。当我将CompilerVersion设置为“v3.5”时,没有出现错误C# 是否可以从带有CSharpCodeProvider的.net3.5应用程序中以.net4编译器为目标?,c#,.net,csharpcodeprovider,C#,.net,Csharpcodeprovider,我正在尝试使用.net 3.5应用程序中的CSharpCodeProvider编译.cs文件,我想将.net4编译器作为目标,但遇到以下错误“无法找到编译器可执行文件csc.exe”。我已经安装了.net4。下面是我使用的代码,为了简洁起见,省略了一些行。当我将CompilerVersion设置为“v3.5”时,没有出现错误 CompilerResults results = null; using (CSharpCodeProvider provider = new CSharpCodePro
CompilerResults results = null;
using (CSharpCodeProvider provider = new CSharpCodeProvider(new Dictionary<string, string>() {{"CompilerVersion", "v4.0"},}))
{
CompilerParameters options = new CompilerParameters();
...
results = provider.CompileAssemblyFromFile(options, Directory.GetFiles(path, "*.cs", SearchOption.AllDirectories));
}
CompilerResults结果=null;
使用(CSharpCodeProvider provider=newcsharpcodeprovider(newdictionary(){{“compilervision”,“v4.0”},}))
{
CompilerParameters选项=新的CompilerParameters();
...
结果=provider.CompileAssemblyFromFile(选项、目录.GetFiles(路径“*.cs”、搜索选项.AllDirectories));
}
我认为您可以强制使用.NET 4.0中的csc v3.5
但反之亦然
(我可能错了)。听起来像是路径问题。net 3.5程序集和4.0(尤其是在GAC方面)不共享同一个GAC检查安装.net 4.0 framework的路径供初学者使用…net4安装在C:\Windows\Microsoft.net\framework\v4.0.30319\中,.net3.5安装在C:\Windows\Microsoft.net\framework\v2.0.50727\使用“CompilerVersion”在字典中传递给构造函数。汉斯,我就是这么做的。在我发布的示例中,您必须向右滚动才能看到它。NET4.0知道如何找到v2.0、v3.5和v4.0编译器。NET3.5知道如何找到v2.0和v3.5编译器。但从未听说过v4.0版本。