如何在.NET Framework 4.0中的當前AppDomain中運行編譯代碼?下面的代碼在net framework 3.5中工作,但是objCompilerParameters.Evidence在.NET Framework 4.0中已經過時了,那麼如何解決它呢?在.NET Framework 4.0中的AppDomain中運行codeCom代碼
protected void Button1_Click(object sender, EventArgs e)
{
VBCodeProvider objVBCodeProvider = new VBCodeProvider();
CompilerParameters objCompilerParameters = new CompilerParameters();
objCompilerParameters.ReferencedAssemblies.Add("System.dll");
objCompilerParameters.Evidence = AppDomain.CurrentDomain.Evidence;
objCompilerParameters.CompilerOptions = string.Empty;
objCompilerParameters.GenerateExecutable = false;
objCompilerParameters.GenerateInMemory = false;
objCompilerParameters.IncludeDebugInformation = false;
objCompilerParameters.TreatWarningsAsErrors = false;
objCompilerParameters.WarningLevel = 0;
objCompilerParameters.ReferencedAssemblies.Add(this.GetType().Assembly.Location);
// source contains the code, is of type string
CompilerResults cr = objVBCodeProvider.CompileAssemblyFromSource(objCompilerParameters,source);
if (cr.Errors.HasErrors)
{ Console.WriteLine("Error");
foreach (CompilerError err in cr.Errors)
{ Console.WriteLine(err.ErrorText); } }
else
{
// Some things...
}
}
MSDN(http://msdn.microsoft.com/zh-cn/library/ee191568%28VS.100%29.aspx#migration)包含用於遷移廢棄API的建議 – ChrisWue
我已閱讀那裏描述的建議。我對使用傳統策略選項不感興趣。我想遷移它,但在你提供的msdn鏈接中不夠清晰。另外,在CompilerParameters類的Evidence屬性中,並未說明如何遷移,即如何將安全權限應用於.NET Framework 4.0中的編譯器。 – user1624552
目標是應用安全策略權限來授予編譯的程序集。我不知道如何翻譯objCompilerParameters.Evidence = AppDomain.CurrentDomain.Evidence;轉換爲有效的(不是過時的)點.NET Framework 4.0。 – user1624552