私はマルチプラットフォームアプリケーションを作成しています。私は、(2.0および.NET 4.5 .netstandardターゲット)の多標的共有ライブラリを持っている...プロジェクトファイルを参照してください:私はWindows上のVisual Studio 2017でプロジェクトをビルドすると、私は2つのディレクトリを取得Visual Studio Communityの条件付きリファレンス2017
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
</PropertyGroup>
を出力(netstandard2.0、net45)と対応するdll。ビルドは成功です。
私はMac上のVisual Studio 2017年に正確に同じプロジェクト(同じコード)を構築するとき、私はこのような性質のエラーを取得:
タイプは「OptionAttribute」「CommandLine.DotNetStandard、バージョンの両方に存在します= 1.0.30' と 'のCommandLine、バージョン1.9.71.2 ='
私は条件付きで次のようにコマンドラインパーサライブラリを参照:
<!-- CommandLineParser library -->
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="CommandLine.DotNetStandard">
<Version>1.0.3</Version>
</PackageReference>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net45'">
<PackageReference Include="CommandLineParser">
<Version>1.9.71</Version>
</PackageReference>
</ItemGroup>
これはウィンドウズにはうってつけですが、Macではそれが条件を観測していないようです。これはMac上のVisual Studioの既知のバグですか?私は何か間違っているのですか?
が、MSBuildのは、単に黙っので、実際の問題をマスキング、条件を無視することにも悪い:
Choose/When
代わりに使用し、それは完全にサポートされなければなりません。 –