2011-04-04 18 views
24

Estoy tratando de agregar un WPF ResourceDictionary a un proyecto de C# que se creó hace un tiempo. El proyecto no era originalmente un proyecto de WPF, pero ahora necesito incluir algunos recursos de WPF en él.¿Por qué no puedo agregar ciertos tipos de archivos a proyectos VS2010?

Cuando hago clic derecho en el proyecto y selecciono "Agregar", ResourceDictionary no es una opción. Incluso si abro el cuadro de diálogo Modal y navego hacia donde debería estar el tipo ResourceDictionary (junto con los otros tipos de WPF), no está presente.

Además, cuando agrego manualmente un archivo XAML que tiene sintaxis ResourceDictionary al proyecto, no puedo cargarlo programáticamente usando la sintaxis WPF Application.Load (uri), por lo que siento que VS2010 me impide agregar el archivo para una razón.

¿Cómo puedo hacer que mi proyecto sea "capaz" de agregar un ResourceDictionary sin volver a crear todo el proyecto desde cero como un proyecto WPF y volver a agregar cada archivo desde cero?

Además, ¿qué define los tipos de archivos que se pueden agregar a los proyectos para poder evitar problemas similares en el futuro? Espero que sea algo simple como una línea que necesito agregar a mi archivo AssemblyInfo.cs.

+0

¿Cómo se creó el proyecto? No estoy realmente sorprendido de que no puedas agregar un elemento WPF a un proyecto que no sea WPF. – ChrisF

+2

Eso se debe archivar como un error en Microsoft ¿verdad? Es perfectamente válido crear una ventana de WPF en un proyecto de clase. –

Respuesta

38

Cierre el proyecto. Cree un nuevo proyecto que sea del tipo de proyecto WPF que habría utilizado. Luego abra el nuevo archivo .csproj en el bloc de notas. Encuentre el elemento ProjectTypeGuids. Copie esos GUID en el portapapeles. Abra su archivo .csproj existente en el bloc de notas. Agregue esos GUID en el elemento ProjectTypeGuids de este archivo. (Busque engaños.) Recargue su proyecto en Visual Studio. Debería poder agregar todos los tipos de archivos WPF ahora.

PD: No he hecho esto específicamente con WPF, pero tengo otros tipos de proyectos y funcionó sin problemas.

Creo que los GUIDS son los mismos para todos, por lo que los valores que necesita deben ser: {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ... esto debería ahorrarle el paso de crear un nuevo proyecto.

+0

Mi csproj ni siquiera tenía un ProjectTypeGuids.Añadí esto y funciona: {60dc8134-eba5-43b8-bcc9-bb4bc16c2548}; {FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}

+1

No estoy seguro si simplemente puede agregar un nuevo '', pero uno de mis proyectos existentes aparece '' bajo el primer elemento ' ... '. – Pakman

+0

Como referencia: aquí hay una [lista compilada] (http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs) con muchos GUID de proyectos diferentes. Contiene los GUID mencionados también. – Vlad

0

Intente crear un proyecto WPF en blanco y luego diferencie los archivos .csproj (son simplemente XML) para que así como su proyecto puedan ver las diferencias, aparte de las listas de archivos y la extraña configuración del compilador, puede bien encuentre un GUID u otra entrada que identifique el tipo de proyecto, que podrá copiar/pegar para "actualizar" su proyecto (después de tomar una copia de seguridad de su archivo de proyecto existente, por supuesto!)

Alternativamente , puede copiar y pegar el archivo/carpeta XML (cuidadosamente) entre los archivos csproj para "reconstruir rápidamente todo el proyecto desde cero", por lo que no es necesario tener miedo de hacerlo.

2

Creo que su mejor opción es crear un nuevo proyecto WPF y copiar todo. Si se trata de un proyecto muy grande (y se siente aventurero) es posible abrir el XML de los archivos de proyecto (descargar el proyecto, a continuación, editar el archivo csproj original en XML)

enter image description here

A continuación, copie todo el ItemGroup secciones, y asegúrese de que los archivos fuente correspondientes existan en el nuevo directorio del proyecto. ¡Buena suerte!

Cuestiones relacionadas