【问题标题】:Custom WPF namespace mappings failing in Visual Studio 2010自定义 WPF 命名空间映射在 Visual Studio 2010 中失败
【发布时间】:2011-02-24 23:08:56
【问题描述】:

我刚刚安装了 Visual Studio 2010 并转换了我的一个 Visual Studio 2008 WPF 项目以进行测试。虽然项目正确构建和运行,但 VS 设计器无法处理我给出的错误的自定义命名空间映射:

必须为不属于项目的 XAML 文件指定程序集。将此 XAML 文件添加到项目后重新打开它,关闭此文件并使用与之关联的项目重新打开它,或修改 clr-namespace 以包含程序集的名称。

有问题的命名空间是项目的一部分。 Visual Studio 2008 对 XAML 没有任何问题。所以我创建了一个名为Test1 的新空白WPF 项目,命名空间为Test1。然后我编辑了生成的 MainWindow.xaml 来为local 添加一个映射:

<Window x:Class="Test1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Test1"
    Title="MainWindow" Height="350" Width="525">
    <Grid />
</Window>

这给出了同样的错误。而且,令人惊讶的是,谷歌没有报告该错误的结果!我尝试了一些变体,例如附加 ;assembly=;assembly=Test1,但这并没有帮助。

谁能发现我做错了什么?如果没有,我将非常感谢有关为什么这可能会失败的建议。

编辑: 根据 cmets,事实证明,这只发生在从网络共享打开项目时。如果在本地驱动器上打开项目,则不会发生这种情况。但是,我希望能够在网络共享上打开它,所以我将保留这个问题。

【问题讨论】:

  • 无论如何,我无法重现此问题。听起来问题不在于您的 xmlns,而是出于某种原因 VS 认为您的 .xaml 不是项目的一部分。
  • 感谢您尝试复制 JustABill。在您的测试和 Google 上没有该错误之间,很明显 VS2010 可能以某种方式损坏或该开发系统特有的其他问题。
  • 我在 Visual Studio 2010 上成功修复,但没有解决问题。
  • 问题不在于安装 Visual Studio 2010。我只是使用本地驱动器路径 (D:\...) 而不是 UNC 路径 (\\SERVER\D \...),它工作正常。此外,我在使用 UNC 路径时收到 You should only open projects from a trustworthy source. The project file 'project' may have come from a location that isn’t fully trusted. 警告。我已经确认我是所有者并且我拥有所有必要的权限。这是在本地创建的,因此我无法根据有关该警告的各种博客“取消阻止”它。我会继续调查。
  • 原来这个问题和“可信来源”问题无关。我设法通过将 CasPol.exe 权限重新应用到我的 UNC 路径来解决这个问题(显然安装 VS2010 要么重置它们,要么我需要使用新的 .NET 4.0 CasPol.exe 重新应用它们,我也这样做了。然后警告消失了,但问题没有。除非我使用本地驱动器路径,否则它拒绝工作。

标签: wpf visual-studio-2010 namespaces


【解决方案1】:

网络路径是我的罪魁祸首。

【讨论】:

    【解决方案2】:

    只是总结一下这篇文章的所有答案,因为这个问题对我来说也是一个痛苦,我设法通过以下方式解决了它。

    首先,问题在于项目不在本地驱动器上,这会在 Visual Studio 环境中产生一些问题。

    解决问题:

    1. 确保使用映射驱动器(如P:/Projects/.../mySolution.sln)打开项目。小心,这意味着映射驱动器是不够的;您必须映射路径(从使用映射驱动器的文件资源管理器窗口)打开它。如果你继续使用VS中的“最近项目”菜单加载它,路径仍然是绝对的。

    2. 修改名为devenv.exe.config的开发环境配置文件,并在configuration/runtime部分添加&lt;loadFromRemoteSources enabled="true" /&gt;。此文件位于安装 VS 的驱动器上。

    如果您遇到此问题,很可能是您在企业环境中工作,在该环境中您对本地硬盘的访问权限可能受到限制,这意味着您必须要求 IT 基础架构部门为您进行更改。

    最后,我想补充一点,如果你不使用这个调整,你也会遇到单元测试项目的问题。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      我们公司的一些人也遇到了类似的问题,因为我们为每个开发人员使用网络共享。

      使用已保存密码的映射网络驱动器进行重启的用户不会出现此问题。

      这可能与域或环境有关……而 VS 处理不当?

      【讨论】:

        【解决方案4】:

        存在与此相关的 Connect 问题。在解决方法中是一个链接,您可以尝试执行此操作:http://connect.microsoft.com/VisualStudio/feedback/details/568464/wpf-project-on-a-network-share-with-clr-namespace#details

        这是解决方法的直接链接; http://msdn.microsoft.com/en-us/library/dd409252.aspx

        【讨论】:

        • 谢谢安迪。当我想结束这个问题时,我会尽快调查这个解决方法。正如我们许多人所知,将映射作为网络驱动器从来都不是可接受的解决方法。
        • 如果这能解决我为任何人描述的问题,我会很感兴趣。我在configuration/runtime 下将&lt;loadFromRemoteSources enabled="true" /&gt; 添加到我的devenv.exe.config(注意:文本编辑器必须以管理员权限运行)并将我的测试项目转换为.NET 4.0,但它没有t 改变了错误。
        【解决方案5】:

        尼尔艾伦是对的。将文件夹映射为驱动器,一切都会好起来的。 如何映射: http://www.online-tech-tips.com/computer-tips/how-to-map-a-drive-in-windows/

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,但我发现使用映射的驱动器号而不是 UNC 路径对我有用。

          问候

          尼尔·艾伦

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-04-30
            • 2015-02-17
            • 2011-06-20
            • 1970-01-01
            • 1970-01-01
            • 2023-04-03
            • 1970-01-01
            相关资源
            最近更新 更多