我有一个使用"Class Library“项目模板创建的类库。如果我在解决方案资源管理器中右击该库并选择“添加>用户控件”,Visual Studio将添加一个WinForms UserControl。这不是我想要的--我想要“添加>用户控件”来添加一个WPF用户控件。
我已经添加了对WPF程序集(WindowsBase、PresentationFramework和PresentationCore)的引用,并且这个库中已经有了一些WPF UserControls,一切都可以编译。我的库没有对WinForms程序集(System.Drawing和System.Windows.Forms)的引用。但是很明显,适当的引用对于Visual Studio来说是不够的,因为当我尝试Add > User Control时,它会将WinForms引用添加到我的项目中,然后创建一个WinForms UserControl。
我可以将WPF用户控件添加到WPF应用程序项目中,然后将其移动到我的库中。但这是一件痛苦的事情,我更希望它一开始就能正常工作。
我想我可能在.csproj文件中遗漏了某种神秘的XML元素,它告诉Visual Studio默认使用哪个设计器,如果我添加了具有正确的隐蔽GUID的正确的XML元素,它将开始正常工作。如果我可以创建一个新的WPF控件库,我可能会比较这两个项目文件,并弄清楚这一点。但是,我使用的是Visual,它没有用于C#控件库项目的模板,所以我不太走运。
我需要对类库的.csproj文件做些什么才能让VS2010中的Add > New User Control添加一个WPF UserControl?
发布于 2011-05-15 00:53:08
项目文件中的子项目类ids通常会影响Visual Studio上下文菜单和项目的行为方式。最简单的做法是将项目重新创建为:
而不是“类库”。如果您已经创建了要在子项目类ids中手动编辑的项目,则可以通过在文本编辑器(如Visual Studio本身)中打开".csproj“文件来进行编辑,但这很容易造成比您所修复的更多的损坏。
我相信但还没有测试过另一种类型库也可以工作:
它旨在保存除UserControl对象之外的其他类型的控件,但是作为WPF子项目类型,上下文菜单也可以正确地用于您所描述的用例。
编辑:
为了完整起见,我刚刚测试了如何手动添加子项目GUIDS。将以下行添加到.csproj文件中的第一个PropertyGroup:
<PropertyGroup>
...
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>未使用Visual Studio速成版进行测试。
https://stackoverflow.com/questions/6003288
复制相似问题