Ha megpróbálod a Windows-t a saját névtered részeként használni a Metro-stílusú alkalmazásokban (pl. MyCompany.Windows), akkor úgy tűnik, hogy kidobja a fordító(ka)t, mert nem a Windows, hanem a te névtered alatt kezdenek WinRT cuccokat keresni.*.
Például, ha létrehoz egy üres Windows Metro stílusú alkalmazást App1 néven, és átnevezi az App1 névteret App1.Windows névre, és megpróbálja lefordítani, hibaüzenetet fog kapni:
A típus- vagy névtérnév „UI” nem létezik az „App1.Windows” névtérben (hiányzik egy összeállítási hivatkozás?) F:\temp\App1\App1\obj\Debug\App.g.i.cs
a generált fájl teteje így néz ki:
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
és a probléma az, hogy a fordító elkezdi keresni a Windows.UI-t az App1.Windows alatt.
Ez most nem újdonság, és ha korábban elnevezné a névterét App1.System, valószínűleg valamikor hasonló bajba kerülne. A probléma az, hogy nagyon sok WPF/Silverlight/Windows Phone kód MyCompany.Windows.Xyz névtereket használ, és valószínűleg érzékeny az ilyen jellegű problémákra.
Van valami útmutatás a Microsofttól (úgy tűnik, nem találom), hogy mit kell tenni ezekkel a névterekkel? Vagy esetleg vannak tervek ennek megoldására a jövőbeli verziókban? Vagy csak nekem hiányzik valami?