質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

2715閲覧

プロジェクトファイルをXamarin.Android用にする際のImport Projectの指定について

退会済みユーザー

退会済みユーザー

総合スコア0

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2016/11/28 00:52

プロジェクトファイルをXamarin.Android用にする際のImport Projectの指定についての質問です。

Xamarin.Android用のプロジェクトファイルの中で

XML

1<Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />

もしくは

XML

1<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />

になっている箇所があります。

$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targetsの中をのぞくと

XML

1<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" /> 3</Project>


$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targetsへのエイリアスのようになっています。

Mono for Androidの頃より使用しておりますが、前に作成したものは
<Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />
となっており、

現在、新規で作成すると
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
になります。

Xamarin.Android用以外のプロジェクトファイル内のImport Projectを
<Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />
もしくは
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
に編集し、特定の<ProjectTypeGuids>を加えることで、大方のものはXamarin.Android用にする事が可能と認識しております。


質問1:
Xamarin.Android用以外のプロジェクトファイルをXamarin.Android用にする際に

XML

1<Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />

XML

1<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />

どちらを使用するべきなのでしょうか。

エイリアスになっていることから、どちらを使用しても今のところ問題は出ないという認識です。
当方の認識としては、歴史的背景より互換性保持のために$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targetsは存在し、その理由より、新規に積極的に使うことは推奨されないと考えており、
普通は、<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />を使うべきと考えています。
この認識はあっておりますでしょうか?

Protobuildというプロジェクト自動生成ツールを使用したら、<Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />を使っていて、あれ?と思ったもので。

質問2:
Xamarin.Android用のプロジェクトファイルの後方互換性がどの程度の長さのものなのか
ひいては
SDKに影響されないところのXamarin関連の互換性の継続程度はどの程度のものなのでしょうか?

ポリシーとして策定されているのではないかと思い、
xamarin backward compatibility policy というキーワードで検索してみましたが、それらしいものは見つかりませんでした。

将来バージョンアップ時に突然に$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets
存在しなくなることへの懸念からの質問で、それが起こっても文字列置き換えをすれば解決できそうですので、こちらについては、もしわかればという程度です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そう、ただのエイリアスです。近い将来消えます(いつになるかはわからないけどそういう話をしているので)。サードパーティツールが何を生成するかは、Xamarinチームが把握できるところではありません。

仕様変更の明文化されたポリシーは無いと思いますが、APIならいったん[Obsolete]を付けてから消す感じですね。これはどうやってdeprecationを通知できるかわからないので、いきなり消えるかも…

投稿2016/11/28 02:47

atsushieno

総合スコア121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/28 02:57

回答ありがとうございます。 懸念点が結構現実味を帯びているんですね。。。 Protobuildのprojectにissueとかあげてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問