Xamarin Studio で、プロジェクトファイル毎に packages.config を変える方法
同一ディレクトリにあるプロジェクトで、それぞれ nuget packages の構成を変えたい場合があります。
デバッグ用とリリース用のプロジェクトを分けていて、デバッグ用にのみ必要な nuget パッケージを使っている、とか。
MyAwesomeApp_debug.csproj <-- Debugログ収集用の nuget パッケージを使っている
MyAwesomeApp_release.csproj <-- そんなものは必要ない
ライブラリをデバッグしながらアプリを実行したい場合と、アプリだけで実行したい場合、とか。
MyAwesomeApp.csproj <-- アプリ単体のプロジェクト(lib は nuget から得る)
MyAwesomeApp_with_lib.csproj <-- lib をアプリからデバッグしたい時のプロジェクト(lib はプロジェクト参照でソースが提供されるので nuget 要らない)
私がやりたかったのは後者で、 Xamarin.Forms.GoogleMaps のサンプルプロジェクトは、
- サンプルのみ利用したい人(普通はこっち)は、 XF.GoogleMaps は nuget から読み込ませたい
- 開発に参加する人は、XF.GoogleMaps はプロジェクト参照で読み込ませたい
という2つのニーズがあります。
通常、 プロジェクトで使用する nuget パッケージは、xxx.csproj
と同じディレクトリにある packages.config
というファイルで管理されます。
ところが上記のような同じディレクトリ内に複数のプロジェクトがある場合、どちらも packages.config
を参照してしまいます。
なにか良い手はないかなーと探していたら、ありました。
どうやらですね、 packages.config
は、 packages.プロジェクト名.config
というファイル名に変えると、その .csproj
のためだけの nuget パッケージ設定ファイルになる模様。
さっそく、サンプルプロジェクトに 適用しました。
プロジェクトは XFGoogleMapSample.csproj
と XFGoogleMapSample.local.csproj
があるので、それにあわせて packages.XFGoogleMapSample.config
と packages.XFGoogleMapSample.local.config
を用意しました。(packages.config
は消しました。)
2つのプロジェクトをそれぞれ含む2つのソリューションを開いてみると、
このように、 XFGoogleMapSample.local.csproj
の方は、 Xamarin.Forms.GoogleMaps
が Packages にないのがわかります。
このように、 packages.[projectname].config
とすると、プロジェクト固有の nuget 設定ファイルにすることができます。(このケースでも packages.config
が存在しているとそちらが優先されてしまうようです。)
この構成で、 Xamarin Studio、 Visual Studio for Mac, Visual Studio 2015 で問題なく読み込めましたし、 Bitrise という CI サービスでも使えたので、実用には問題なさそうです。
Author And Source
この問題について(Xamarin Studio で、プロジェクトファイル毎に packages.config を変える方法), 我々は、より多くの情報をここで見つけました https://qiita.com/amay077/items/7479b4f6da56d5998289著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .