Visual Studio 2022目标x86或x64导致出现错误,Windows运行时库消失

thtygnil  于 2023-08-07  发布在  Windows
关注(0)|答案(2)|浏览(615)

正如你所看到的,当我在这里指定x86(或x64)时,我得到:
类型或命名空间名称“Devices”在命名空间“Windows”中不存在(是否缺少程序集引用?)
.NET目标是4.8,如果不重新制作整个项目,则无法在此项目上更新。
目标必须不能设置为“任何CPU”才能创建MSIX安装程序,我大约一个月前已经这样做了,没有这个问题-所以为什么现在出现这个问题对我来说是个谜。我只是重复同样的过程,因为我的高清被损坏,我失去了最新的项目。在过去的两年里,我遇到了很多问题,因为我开发了这个项目,并始终设法通过工作。然而,这一次却让我卡住了
错误:[ error ]
没有错误:(https://i.stack.imgur.com/r0fZW.png
我已经搜索了这个网站,并试图谷歌类似的问题,但没有找到任何人与这个问题
我已经尝试添加Nuget,Microsoft.Windows.SDK.Contracts,但无法安装。然而,为什么我必须安装任何更多的参考,因为没有问题的“任何cpu”选择?我可以通过将一些dll文件从一个文件夹复制到另一个文件夹来解决这个问题吗?
我尝试做一个测试应用程序来进行实验,但它针对的是.NET 6,并且能够成功安装Microsoft.Windows.SDK.Contracts,所以我无法真正复制这个问题
最新消息:
我无法在VS 2022上创建.NET 4.8项目,因为它只是从选项中丢失。事实上,只有6和7作为选项给出,即使安装了许多其他版本(包括.NET版本和单个组件)。在阅读了这个问题之后,有一种理论认为VS 2022将组件放在注册表中而不是固定位置,然后在运行时无法访问它们。
我试着回到VS 2019,遇到了同样的问题。原始问题以及没有选项在任何其他版本的.NET中创建WPF项目,而不是6或7。
我尝试按照BowmanZhu的建议,卸载Microsoft.Windows.SDK.Contracts、System.Runtime.InteropServices.WindowsRuntime、System.Runtime.WindowsRuntime和System.Runtime.WindowsRuntime.UI.Xaml
但我不能,因为它们已经从Nuget软件包列表中丢失了。
然后我查找了几个月前的备份,并在VS 2019中打开了它。同样的问题也会发生。与我的所有解决方案一样,如果目标设置为“Any CPU”,则主应用程序可以正确构建和运行。只有当项目上下文平台更改为x86或x64时才会出现此问题。我目前正在安装VS 2017的试用版,看看那里会发生什么,以及.NET 4.8等是否可用。

i34xakig

i34xakig1#

正如西蒙提到的,你的项目可能会因为某些原因而中断。
您可以创建一个新项目来查看是否可以避免此问题。如果这个问题在netframework 4.8中仍然存在,你可以检查下面的步骤。
我可以复制你的问题:


的数据



我可以在我这边解决它。
步骤:

1、设置默认包管理格式为packagereference,然后清空所有nuget包:


2、卸载.net 4.8项目的Microsoft.Windows.SDK.Contracts、System.Runtime.InteropServices.WindowsRuntime、System.Runtime.WindowsRuntime、System.Runtime.WindowsRuntime.UI.Xaml。



3、ReinstaLL Microsoft.Windows.SDK.Contracts,我这边的版本是10.0.22621.755。此时,问题应该消失:


vxbzzdmp

vxbzzdmp2#

谢谢你的帮助。在我的例子中,答案是关于对Windows命名空间的引用(引用中的“Windows”)。解决我的问题最简单的方法是删除这个引用,然后再添加回来。我添加它去“添加引用...”然后“浏览”然后“浏览”按钮,然后我发现“Windows.winmd”(在我的情况下,它是在项目文件夹>斌>发行)。
这是如何发生的仍然是未知的,为什么不同目标之间的奇怪行为仍然让我感到困惑。其他考虑因素包括:
也可以通过在csproj文件中插入行“TargetPlatformVersion>8.0</TargetPlatformVersion”来添加Windows命名空间,然后单击解决方案资源管理器中的引用和“添加引用...”(您将在左侧看到一个“Windows”选项卡),但是如果项目中已经有任何Windows命名空间引用,则会出现冲突。
如果VS项目位置的目录路径太长,则Nuget包、Microsoft.Windows.SDK.Contracts(或任何包)可能无法安装。只有VS 2017给出了确切的错误信息来告诉我这一点,其他的都给予了错误“未找到路径”。

相关问题