Windows Phone 8 应用不包含 InitializeComponent 的定义
Posted
技术标签:
【中文标题】Windows Phone 8 应用不包含 InitializeComponent 的定义【英文标题】:Windows Phone 8 app does not contain a definition for InitializeComponent 【发布时间】:2014-08-26 21:52:58 【问题描述】:我刚刚下载了 Visual Studio 的 14 CTP 版本并为 Windows Phone 创建了一个空白应用程序。我尝试打开MainPage.xaml
,设计器显示如下错误:
对于那些看不到图像的人:
System.Exception
Package failed updates, dependency or conflict validation.
Windows cannot install package App.a5cd6ef3c.a895b.a4508.a96fd.af1634c30bb13 because this package depends on another package that could not be found. This package requires minimum version 0.0.0.0 of framework Microsoft.VCLibs.140.00.Debug published by any publisher to install. Provide the framework along with this package.
at Microsoft.Expression.HostUtility.Platform.AppContainerProcessDomainFactory.CreateDesignerProcess(String applicationPath, String clientPort, Uri hostUri, IDictionary environmentVariables, Int32& processId, Object& processData)
at Microsoft.Expression.DesignHost.Isolation.Primitives.ProcessDomainFactory.ProcessIsolationDomain..ctor(ProcessDomainFactory factory, IIsolationBoundary boundary, AppDomainSetup appDomainInfo, FrameworkName targetFramework, String identifier, String baseDirectory)
at Microsoft.Expression.DesignHost.Isolation.Primitives.ProcessDomainFactory.CreateIsolationDomain(IIsolationBoundary boundary)
at Microsoft.Expression.HostUtility.Platform.AppContainerProcessDomainFactory.CreateIsolationDomain(IIsolationBoundary boundary)
at Microsoft.Expression.DesignHost.Isolation.Primitives.IsolationBoundary.Initialize()
at Microsoft.Expression.DesignHost.Isolation.Primitives.IsolationBoundary.CreateInstance[T](Type type)
at Microsoft.Expression.DesignHost.Isolation.IsolatedObjectFactory.Initialize()
at Microsoft.VisualStudio.ExpressionHost.Services.VSIsolationService.CreateObjectFactory(IIsolationTarget isolationTarget, IObjectCatalog catalog)
at Microsoft.Expression.DesignHost.Isolation.IsolationService.CreateLease(IIsolationTarget isolationTarget)
at Microsoft.Expression.DesignHost.Isolation.IsolationService.CreateLease(IIsolationTarget isolationTarget)
at Microsoft.Expression.DesignHost.Isolation.IsolationService.CreateLease(IIsolationTarget isolationTarget)
at Microsoft.Expression.DesignHost.IsolatedDesignerService.CreateLease(IIsolationTarget isolationTarget, CancellationToken cancelToken, DesignerServiceEntry& entry)
at Microsoft.Expression.DesignHost.IsolatedDesignerService.IsolatedDesignerView.CreateDesignerViewInfo(CancellationToken cancelToken)
at Microsoft.Expression.DesignHost.Isolation.IsolatedTaskScheduler.InvokeWithCulture[T](CultureInfo culture, Func`2 func, CancellationToken cancelToken)
at Microsoft.Expression.DesignHost.Isolation.IsolatedTaskScheduler.<>c__DisplayClass5`1.<StartTask>b__7()
at System.Threading.Tasks.Task`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
我输入了App1.xaml.cs
和MainPage.xaml.cs
,我发现App 和MainPage 分别没有InitializeComponent()
的定义。
项目处于由 Visual Studio 创建的状态,我没有更改任何内容!
为什么会发生这种情况,我该如何解决?
【问题讨论】:
检查您的 MainPage.Xaml.cs 是否与 xaml PAGE 同名 name 你的意思是x:Class
?
我是Windows Phone编程的新手,但这实际上不属于我的项目编程。这是一个 Visual Studio 错误...(我不得不提一下,在 2013 Ultimate 版本中也发生了同样的情况)
!好吧,我还没有尝试过 vs14,但你安装了最新的 SDK 吗?你的操作系统是什么?
在Visual Studio的安装中,我检查了Windows Phone SDK的安装(仅此而已)。我的操作系统是 Windows 8.1 64 位。
【参考方案1】:
今天同样的事情开始发生在我身上;要重现此问题,我只需打开 Visual Studio 2013 Update 4,创建一个空白的 Windows Phone 8.1 并双击 MainPage.xaml。
我通过执行以下操作解决了问题(混合了我在网上阅读的内容):
退出所有 Visual Studio 实例 删除 %localappdata%\Microsoft\VisualStudio\12.0\Designer\ShadowCache 上的所有内容以管理员权限打开命令提示符并执行以下命令:
pushd %VS110COMNTOOLS%
icacls ..\IDE /grant *S-1-15-2-1:(OI)(F)
icacls ..\IDE /grant *S-1-15-2-1:(CI)(F)
icacls ..\IDE\PrivateAssemblies /grant *S-1-15-2-1:(OI)(F)
icacls ..\IDE\PrivateAssemblies /grant *S-1-15-2-1:(CI)(F)
icacls ..\IDE\PublicAssemblies /grant *S-1-15-2-1:(OI)(F)
icacls ..\IDE\PublicAssemblies /grant *S-1-15-2-1:(CI)(F)
最后,重启。在 Windows 8.1 64 位上工作。
【讨论】:
这个解决方案结合this answer为我解决了这个问题。【参考方案2】:确保 XAML 上的类名与代码隐藏中的类名匹配。我在重构时遇到过几次。
XAML 开始标记:
<UserControl
x:Class="Namespace.Foo"
... />
代码背后:
public sealed partial class Bar : UserControl
public Bar()
// This will become the error specified (does not contain definition)
this.InitializeComponent();
...
因此,此处的 Namespace.Foo 需要为 Namespace.Bar 才能消除错误。如果使用 Page
而不是 UserControl
,这应该具有相同的行为。
【讨论】:
【参考方案3】:检查页面中的 x:class 属性
【讨论】:
【参考方案4】:-
“工具”——>“扩展和更新”——>安装或更新“nuget包管理器”之类的;
尝试以管理员身份打开
fat32 中的磁盘似乎会导致错误
如果你在 SDK 之前安装 Silvertlight,可能会导致错误
【讨论】:
【参考方案5】:今天遇到同样的问题,通过杀死所有实例并再次打开它来解决它。
【讨论】:
【参考方案6】:它对我不起作用。刚刚创建了管理员类型的新本地帐户(Window 8.1,VS 2013 update 4)。使用新的本地帐户登录。打开看看就解决了。
【讨论】:
以上是关于Windows Phone 8 应用不包含 InitializeComponent 的定义的主要内容,如果未能解决你的问题,请参考以下文章
Windows Phone 8.1 XAML 应用程序。如何防止不适当的自动对焦改变?
如何在 Windows Phone 8 应用程序中播放循环背景音频(不使用 BackroundAudio 服务)?
如何使用 Windows Phone 8 NFC 应用程序向智能卡发送 APDU 命令
无法在 Windows Phone 8.1 中使用后台任务(需要 ID_CAP_NETWORKING,但它包含在清单中)