我正在使用VS2013构建一个C#/ WPF应用程序,我有以下类定义(在正在运行的应用程序的同一个程序集中):
namespace MyNamespace
{
public class MyKey
{
public MyKey() { }
public string name = "";
}
}
在MainWindow.xaml中,我有:
<Window x:Class="MyNamespace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyNamespace"
Title="MainWindow" Height="350" Width="525" WindowState="Maximized" WindowStyle="None">
<Window.Resources>
<local:MyKey x:Key="key" />
</Window.Resources>
...
VS不断报告
名称&#34; MyKey&#34;在命名空间中不存在 &#34; CLR-名称空间:myNameSpace对象&#34;
有什么想法吗?
P.S。我尝试了以下解决方案(来自stackoverflow中已经发布的问题),但没有一个有效:
的xmlns:本地=&#34; CLR-名称空间:myNameSpace对象;装配=&#34;
编辑:附加信息:目标架构:X64,目标框架:.Net 4.5
答案 0 :(得分:50)
这个已知的VS错误的一个常见解决方案是您尚未指定尝试更改构建目标平台。
如果您当前的构建目标平台是x64,请更改为x86。如果它当前为x86,请更改为x64。
为新目标平台清理和构建解决方案。
更改回所需的目标平台并重新构建。
答案 1 :(得分:2)
我在VS2012 express版中遇到了同样的问题。使用命令
解决了这个问题答案 2 :(得分:1)
一种可能的解决方案是从调试和发布文件夹中删除所有 .dll 文件。
因为有时当您引用项目时它指的是预构建的dll,即使您在调试模式下运行项目。
从调试和发布文件夹中删除所有文件并再次构建该项目,现在将此项目的引用添加到您想要的位置。我的工作非常好。
答案 3 :(得分:0)
我有类似的问题。为我修复的是更改项目的构建属性,该属性已添加为参考。原来,“平台目标”在过去已经改变。将其设置为“任何CPU”并重建它解决了错误。
答案 4 :(得分:0)
运行VS Enterprise 2017版本15.6.2 定位.Net 4.6.1
我在UserControl xaml页面遇到同样的问题,在其资源中它试图引用ValueConverter。命名空间是正确的,intellisense甚至会为你删除它,但设计者不会加载页面,代码也不会编译。我甚至尝试将其中一个值转换器从文件和命名空间中移出,并将其移至代码隐藏。 VS变得非常吓人,声称代码隐藏构造函数中的InitializeComponent()方法不存在。
我认为最终为我解决的是当我意识到ValueConverter类缺少这样的主要属性时:
[ValueConversion(typeof(string),typeof(decimal))]
一旦我添加了这一行,我就做了一个快速的解决方案清理和编译,然后编译和工作。然后突然xaml可以看到该文件中的所有验证规则和值转换器。现在我已经意识到该文件中的其他3个值转换器也没有它们的ValueConversion属性,但代码现在仍在编译。也许关于第一个转换器中传入类型的东西是模糊的。
它仍然有点神秘。我知道我应该退出我的更改,看看错误是否可以重现,但是在一天的大部分时间里对抗这些代码后我都厌倦了看它。这是一个没有运行的旧Prism项目,我将其升级到Prism 7.0库。我还尝试将所有处理器设置重置为“任何CPU”。它抱怨引导程序已经过时,但我忽略了它。我重新启动并多次清理所有内容。我甚至删除了.vs文件夹。我可能应该早点尝试直接删除obj和bin文件夹 - 这是我没做过的一件事。
这不是我的项目。通常我总是将值转换器构建到文件中,文件名称相同。我不认为这很重要,但整个错误在一开始就有点疯狂。
答案 5 :(得分:0)
通常,当我遇到此问题时,我注意到Visual Studio在错误列表中列出了“错误”错误,并使我处于错误的轨道。在Visual Studio的输出窗口中查看实际的生成输出会显示正确的错误。
简而言之:将构建输出与错误列表进行比较。
答案 6 :(得分:0)
如果您使用 NuGet 包,请尝试更改项目中的 Dot.Net 版本并更新已安装的包。
答案 7 :(得分:-1)
就我而言,解决方案是删除我克隆的存储库(意味着所有项目文件)并再次克隆它。这样你就可以确保即使是那些 git-ignored 的文件也被删除了。
PS:当您使用 Visual Studio 开始 git-tracking 项目时,它会自动为您生成 .gitignore 文件。如果您没有使用 Visual Studio 启动 git-tracking,您可以在 Internet 上找到 .gitignore 文件(例如 https://github.com/github/gitignore/blob/master/VisualStudio.gitignore)。另请注意,在您已经开始跟踪文件后,您不能 git-ignore 文件(从技术上讲,您可以,但它需要做一些我们大多数人都无法做到的 git 巫术)。