如果您尝试在 Metro 风格应用程序(例如 MyCompany.Windows)中使用 Windows 作为您自己的命名空间的一部分,它似乎会导致编译器关闭,因为它们开始在您的命名空间而不是 Windows 下寻找 WinRT 内容.*.
例如,如果您创建一个名为 App1 的空白 Windows Metro 风格应用,并将 App1 命名空间重命名为 App1.Windows 并尝试编译它,您将收到错误:
命名空间“App1.Windows”中不存在类型或命名空间名称“UI”(是否缺少程序集引用?)F:\temp\App1\App1\obj\Debug\App.g.i.cs
生成的文件顶部如下所示:
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 是否有一些关于如何处理这些命名空间的指南(似乎找不到)?或者也许有一些计划在未来的版本中解决这个问题?或者我只是错过了什么?
最佳答案
我查看了这个问题,我们应该在生成的代码中使用 global::。我们已修复此问题,并将在下一版本的 Visual Studio 中提供。
关于windows-8 - 在 Metro 风格应用程序中使用单词 "Windows"作为您自己的命名空间的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11294764/