コンパイラ警告CS4014(結果を待つことなく、非同期メソッドを呼び出す)と呼ばれる方法が参照アセンブリにあるときに、ビルド時に警告として放出されていない間に放出されません。コンパイラ警告CS4014は、ビルド
呼び出されたメソッドが同じアセンブリ内にある場合、警告は正しく送出されます。
コンパイラの警告は、両方のプロジェクトが同じソリューションに含まれている場合、Visual Studioでと表示されます。
違いは、両方のアセンブリへのソースコードを有する唯一のコンパイル参照アセンブリおよびVisual Studioを持つコンパイラによって引き起こされているように見えます。
質問は次のとおりです。なぜこれらの2つの異なる動作がありますか?コンパイル中にCS4014の警告を発する方法はありますか?
TestClassLibrary1
public class Class1
{
public static async Task<string> DoSomething()
{
return await Task.FromResult("test");
}
}
TestClassLibrary2(TestClassLibrary1を参照)
public class Class2
{
public void CallingDoSomething()
{
Class1.DoSomething();
}
}
これらのプロジェクトをコンパイル:
は、この動作の設定に2つのクラスライブラリ、両方持つ一つのコードファイルを複製するには警告なしで完了します。 Visual Studioで同じソリューションでそれらを開くと、エラーリストに1エラーが表示され、Class1.DoSomething()
の下に赤い波線が表示されます。
アセンブリをどのようにコンパイルしますか?使用しているステートメントを表示できますか? –
Visual Studio - >ビルドソリューションを使用してアセンブリをコンパイルしています。両方のプロジェクトは、すべての警告とともにコンパイルされます( '/ warn:4')。それが助けになるなら、私はcsc.exeへの引数を貼り付けることができますが、それらはかなり長いです。 –
さて、私はあなたが手でビルを走っていると思った。 –