【问题标题】:Why can't I add certain file types to VS2010 projects?为什么我不能将某些文件类型添加到 VS2010 项目中?
【发布时间】:2011-04-04 20:45:31
【问题描述】:

我正在尝试将 WPF ResourceDictionary 添加到不久前创建的 C# 项目中。该项目原本不是 WPF 项目,但现在我需要在其中包含一些 WPF 资源。

当我右键单击项目并选择“添加”时,ResourceDictionary 不是一个选项。即使我打开 Modal 对话框并导航到 ResourceDictionary 类型应位于的位置(与其他 WPF 类型一起),它也不存在。

另外,当我手动将具有 ResourceDictionary 语法的 XAML 文件添加到项目时,我无法使用 WPF Application.Load(uri) 语法以编程方式加载它,所以我觉得 VS2010 阻止我添加文件原因。

如何使我的项目“能够”添加 ResourceDictionary 而无需从头开始将整个项目重新创建为 WPF 项目并从头开始重新添加每个文件?

此外,什么定义了可以添加到项目中的文件类型,这样我就可以避免将来出现类似问题?希望它像我需要添加到我的 AssemblyInfo.cs 文件中的一行一样简单。

【问题讨论】:

  • 项目是怎样创建的?您不能将 WPF 元素添加到非 WPF 项目中,我并不感到惊讶。
  • 这应该作为一个错误提交给微软吧?在 Class Project 上创建 WPF 窗口是完全有效的。

标签: c# wpf visual-studio-2010


【解决方案1】:

关闭项目。创建一个您将使用的 WPF 项目类型的新项目。然后在记事本中打开新的 .csproj 文件。找到ProjectTypeGuids 元素。将这些 GUID 复制到剪贴板。在记事本中打开现有的 .csproj 文件。将这些 GUID 附加到此文件的 ProjectTypeGuids 元素中。 (检查是否有欺骗行为。)在 Visual Studio 中重新加载您的项目。您现在应该可以添加所有 WPF 文件类型了。

PS:我没有专门用 WPF 做过这个,但是我用其他项目类型做过,它没有问题。

我相信每个人的 GUIDS 都是一样的,所以您需要的值应该是:{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ... 这应该可以为您节省创建新项目的步骤。

【讨论】:

  • 我的 csproj 甚至没有 ProjectTypeGuids。我添加了这个并且它有效: {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
  • 不确定您是否可以简单地添加一个新的<PropertyGroup>,但我现有的一个项目在第一个<PropertyGroup>...<FileAlignment> 元素下列出了<ProjectTypeGuids>
  • 供参考:这里有一个compiled list,其中包含许多不同的项目 GUID。它还包含提到的 GUID。
  • 编辑了答案以解决现有项目中没有ProjectTypeGuids 元素的情况(例如,类库)。不过需要获得批准。
【解决方案2】:

我认为您最好的选择是创建一个新的 WPF 项目并复制所有内容。如果它是一个非常大的项目(并且您喜欢冒险),您可能会打开项目文件的 XML(卸载项目,然后在 XML 中编辑原始 csproj 文件)

然后跨ItemGroup 部分复制,并确保相应的源文件存在于新项目目录下。祝你好运!

【讨论】:

    【解决方案3】:

    尝试创建一个空白 WPF 项目,然后为该项目和您的项目比较 .csproj 文件(它们只是普通 XML),看看有什么区别 - 除了文件列表和奇怪的编译器设置,您可能会很好找到标识项目类型的 GUID 或其他条目,您可以复制/粘贴这些条目以“升级”您的项目(当然是在备份现有项目文件之后!)

    或者,您可以在 csproj 文件之间复制和粘贴文件/文件夹 XML(小心地)以快速“从头开始重建整个项目”,因此不必害怕这样做。

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 2019-12-07
      • 2021-06-03
      • 2011-07-22
      • 1970-01-01
      • 2021-05-18
      • 2018-09-04
      • 1970-01-01
      • 2022-07-26
      相关资源
      最近更新 更多