J'utilise CSharpCodeProvider pour compiler un objet CodeDom dans un assembly. L'application elle-même fonctionne sous .NET 4.0. Cependant j'ai besoin de la sortie de CompileAssemblyFromDom pour construire contre .NET 2.0 pour la compatibilité avec certaines ressources externes. Comment puis-je dire au CSharpCodeProvider de construire avec .NET 2.0?CSharpCodeProvider sortie assembly .NET 2.0 à partir de l'application .NET 4.0
3
A
Répondre
5
Vous pouvez fournir la version du compilateur en tant qu'option via le constructeur CSharpCodeProvider qui prend un argument providerOptions (IDictionary). Si vous utilisez CodeDomProvider.CreateProvider, vous pouvez utiliser sa surcharge similaire. par exemple:
using (CodeDomProvider provider = CodeDomProvider.CreateProvider(
"CSharp",
new Dictionary<string, string>() { { "CompilerVersion", "v2.0" } }))
{
//...
}
La version du compilateur peut également être spécifiée via un fichier de configuration. Voir http://msdn.microsoft.com/en-us/library/bb537926.aspx pour plus de détails et d'exemples.