Как запустить скомпилированный код в текущем AppDomain в .NET Framework 4.0? Ниже кода, который работает в net framework 3.5, но objCompilerParameters.Evidence устарел в NET Framework 4.0, так как его решить?Запустить код codeCom в AppDomain в .NET Framework 4.0
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/en-us/library/ee191568%28VS.100%29.aspx#migration) содержит предложения по переносу устаревших API – ChrisWue
Я прочитал предлагаемые здесь предложения. Я не заинтересован в использовании опции политики устаревшей политики. Я хотел бы перенести его, но в ссылке msdn, которую вы предоставили, недостаточно ясно. Также в свойстве Evidence для класса CompilerParameters не сказано, как переносить, то есть как применять разрешения безопасности для компилятора в NET Framework 4.0. – user1624552
Целью является применение разрешений политики безопасности для предоставления скомпилированной сборки. Я не знаю, как перевести objCompilerParameters.Evidence = AppDomain.CurrentDomain.Evidence; в действительную (не устаревшую) dot NET Framework 4.0. – user1624552