2016-09-18 2 views
4

win32とosx呼び出しを行うためのプラットフォーム固有のコードを持つ.netコアライブラリをビルドしたいと思います。正しいosコード。ドットネットコアビルドプラットフォーム/ os特定のコードまたはクラスファイル

私はcorefxと多くのドキュメントを見てきましたが、私が見つけた唯一の方法は実行時にOSを検出することですが、それは非効率的で面倒です。 corefxの場合、プラットフォーム固有のファイルを自動的に取得するような複雑なビルドシステムがありますが、それはmsbuildなどに依存しています。何か不足していますか?

どのように私は条件付きなどのいずれかのファイル・レベルまたはコードレベルでのOSのコードをターゲットとします:などのMyClassなどのファイル名にOS名を置くことによって、

#if osx 
// come code 
#endif 

または、golangsの道あたりとして。 osx.csにはosxコード、MyClass.csには非プラットフォーム用のものがあり、ビルド処理には正しいファイル自体が含まれています。

私はVisual Studioコードとproject.jsonを使用しています。

(私はVisual Studioで、私は、各プラットフォームのターゲットを定義し、私自身の定義を含めることができると思いますが、私はOSXでよ)事前に

感謝。

答えて

1

あなたproject.jsonにビルド定義を定義することができ

"buildOptions": { 
       "define": [ "PORTABLE328" ] 
      } 

例:

#if !PORTABLE328 
using System.Net.Http; 
using System.Threading.Tasks; 
// Potentially other namespaces which aren't compatible with Profile 328 
#endif 

Source

{ 
    "frameworks":{ 
     "netstandard1.6":{ 
      "dependencies":{ 
       "NETStandard.Library":"1.6.0", 
      } 
     }, 
     ".NETPortable,Version=v4.0,Profile=Profile328":{ 
      "buildOptions": { 
       "define": [ "PORTABLE328" ] 
      }, 
      "frameworkAssemblies":{ 
       "mscorlib":"", 
       "System":"", 
       "System.Core":"", 
       "System.Net" 
      } 
     } 
    } 
} 

は今、あなたは条件付きでそのターゲットに対してコンパイルすることができます

+0

th私が探していたものとまったく同じでした。ありがとう。私がもともと質問したときにあなたがリンクしたドキュメントは存在しませんでした。 – Damien

関連する問題