私はそうのようなCSharpCodeProvider
を作成:CSharpCodeProviderを.NET 4.6.2の代わりに.NET 4.5.0にする方法は?
CSharpCodeProvider codeProvider = new CSharpCodeProvider(new Dictionary<string, string>{{ "CompilerVersion", "v4.0" }});
CompilerParameters compileParameters = new CompilerParameters(refs.ToArray(), newFile, debugBuild) { WarningLevel = 4 };
私はWPF FormattedText
オブジェクトがとても好きで作成するスクリプトを持っている:
FormattedText volumeText = new FormattedText(volumeString, Core.Globals.GeneralOptions.CurrentCulture, FlowDirection.LeftToRight, typeFace, SuperDom.Font.Size, ForeColor) { MaxLineCount = 1, MaxTextWidth = renderWidth - 6, Trimming = TextTrimming.CharacterEllipsis };
.NET 4.6.2は、DPIスケーリングを指定するための新しいコンストラクタを追加し、現在使用しているメソッドは廃止予定です。しかし、私たちのアプリケーションは.NET 4.5.0をターゲットとしており、これが私たちがサポートしているものです。誰かが使用しようとした場合
Warning: 'System.Windows.Media.FormattedText.FormattedText(string, System.Globalization.CultureInfo, System.Windows.FlowDirection, System.Windows.Media.Typeface, double, System.Windows.Media.Brush)' is obsolete: 'Use the PixelsPerDip override'
有効なユースケースは、(私たちのために)がありません新しいコンストラクタが有効であり、実際に私が期待する何を:私のコードをコンパイルするときしかし、私はまだ、次の警告を受けますそのメソッドのシグネチャが4.5で間違っているため、コンパイルエラーが発生します。
これらの警告を回避する方法はありますか?以前はコードプロバイダにCompilerVersion
を指定していませんでしたが、それを追加しても役に立たなかったので、ここで他の質問で見たことに基づいて、v4.0が私の場合に使用する唯一の有効なバージョンです。別の警告レベルでこれを回避できますか?
[この質問](http://stackoverflow.com/questions/20018979/how-can-i-target-a-specific-language-version-using-codedom)では、CodeDomで異なるフレームワークをどのようにターゲット設定するかについて詳しく説明しています。今日、そして4.5フレームワークで同じアプローチが当てはまるのかどうかは考えていませんが、それはあなたの問題です。コンパイラのバージョンではありません。 –
Hmya、あなたは実際に4.5をターゲットにしていません。 VSがインストールする「デベロッパーパック」のおかげで、あなたの開発マシン上の古い.NETバージョンを意図的にターゲットにすることができます。 System.CodeDomでは機能しません。クライアントは利用できません。クライアントのマシンにインストールされているバージョンがあれば、それは予測できません。実際にはFormattedTextを混乱させるので、* pixelsPerDip *引数をとるオーバーロードには依存できません。クリーンな修正がない場合は、その警告を食べる必要があります。 –
@HansPassant私のプロジェクトは.NET 4.5をターゲットにしています。私のコードで.NET 4.6.2で導入されたオーバーロードを使用しようとすると、コンパイルエラーが発生します。これは、上記の廃止された警告を得るのではなく、スクリプトをコンパイルするときに起こりたいことです。 – WasGoodDone