Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以从带有CSharpCodeProvider的.net3.5应用程序中以.net4编译器为目标?_C#_.net_Csharpcodeprovider - Fatal编程技术网

C# 是否可以从带有CSharpCodeProvider的.net3.5应用程序中以.net4编译器为目标?

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

我正在尝试使用.net 3.5应用程序中的CSharpCodeProvider编译.cs文件,我想将.net4编译器作为目标,但遇到以下错误“无法找到编译器可执行文件csc.exe”。我已经安装了.net4。下面是我使用的代码,为了简洁起见,省略了一些行。当我将CompilerVersion设置为“v3.5”时,没有出现错误

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版本。