Metroスタイルアプリ(MyCompany.Windowsなど)で独自の名前空間の一部としてWindowsを使用しようとすると、Windowsではなく名前空間でWinRTのものを探し始めるため、コンパイラーがオフになるようです。
たとえば、App1という名前の空のWindows Metroスタイルアプリを作成し、App1名前空間の名前をApp1.Windowsに変更してコンパイルしようとすると、エラーが発生します。
タイプまたは名前空間の名前「UI」が名前空間「App1.Windows」に存在しません(アセンブリ参照がありませんか?)F:\ temp \ App1 \ App1 \ obj \ Debug \ App.gics
生成されたファイルの上部は次のようになります。
namespace App1.Windows
{
#if !DISABLE_XAML_GENERATED_MAIN
public static class Program
{
[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Windows.UI.Xaml.Build.Tasks"," 4.0.0.0")]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
static void Main(string[] args)
{
Application.Start((p) => new App());
}
}
#endif
partial class App : Windows.UI.Xaml.Application
問題は、コンパイラがApp1.WindowsでWindows.UIの検索を開始することです。
これは目新しいことではありません。名前空間にApp1.Systemという名前を付ける前に、ある時点で同様の問題が発生する可能性があります。問題は、そこにあるかなりの数のWPF / Silverlight / Windows PhoneコードがMyCompany.Windows.Xyz名前空間を使用しており、おそらくこの種の問題の影響を受けやすいことです。
これらの名前空間をどうするかについて、Microsoftからいくつかのガイダンスがありますか(1つを見つけることができないようです)?それとも、将来のバージョンでこれを解決する計画がありますか?それとも私は何かが足りないのですか?