2012-09-27 8 views
10

He instalado VS 2012 Premium utilizando la opción de instalación completa. Cuando creo un nuevo proyecto asp.net, ya sea forma, o de cualquiera de las versiones MVC y luego tratar de construir el proyecto para ejecutarlo sin ningún tipo de modificaciones que recibo el error "montaje o referencia que falta" para lo siguiente:Conjuntos faltantes en plantillas de proyecto predeterminadas

  • Antlr3.Runtime
  • DontNetOpenAuth.AspNet
  • DontNetOpenAuth.Core
  • DontNetOpenAuth.OAuth
  • DontNetOpenAuth.OAuth.Consumer
  • DontNetOpenAuth.OpenID
  • DontNetOpenAuth.OpenID.RelyingParty-
  • Newtonsoft.Json
  • System.Web.Optimisation
  • WebGrease

no he añadido en estos, que son parte de las plantillas. He vuelto a la instalación para verificar y todo está instalado, así que no he dejado un componente.

¿Alguien tiene alguna idea de lo que me he perdido al instalar VS2012? Si no me he perdido nada, no puedo creer que Microsoft incluya referencias a ensamblajes en sus plantillas y luego espere que los descargue antes de construir cualquiera de sus plantillas de proyectos.

+0

Estas son todas las bibliotecas de terceros no incluidas en Visual Studio. Quizás su instalación haya importado plantillas de una versión anterior u otra instalación. – akton

+0

Es una instalación limpia en una máquina nueva, por lo que no ha habido instalaciones de VS anteriores en esta máquina antes de instalar VS2012. He comprobado la plantilla y sí incluye estos ensamblajes. El código en la plantilla también los hace referencia. – MrThirsty

Respuesta

3

Creo que es un problema con la instalación de Nuget o la memoria caché local.

Plantillas VS2012 contienen referencias a bibliotecas de terceros (por ejemplo DontNetOpenAuth o Newtonsoft). Este es un ejemplo de una plantilla de proyecto MVC4:

... 
<WizardData> 
    <packages repository="registry" keyName="AspNetMvc4VS11" isPreunzipped="true"> 
     ... 
     <package id="DotNetOpenAuth.AspNet" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.Core" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.OAuth.Consumer" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.OAuth.Core" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.OpenId.Core" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="DotNetOpenAuth.OpenId.RelyingParty" version="4.0.3.12153" skipAssemblyReferences="true" /> 
     <package id="WebGrease" version="1.1.0" skipAssemblyReferences="true" /> 
     ...  
    </packages> 

Sé que hay una caché local para paquetes NuGet (C:\Users\youraccount\AppData\Local\NuGet\Cache). VS contiene un caché como Entity Framework (C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\NuGet Packages)

Por un motivo poco claro, parece que cuando se crea un nuevo proyecto, VS no pudo encontrar estas referencias externas.

Por lo tanto, básicamente intente obtener la última versión de Nuget y trate de obtener todos estos paquetes al menos una vez.

+0

Eliminé todos los archivos en Nuget \ Cache y creé un nuevo proyecto MVC 4, y todas las referencias se crearon correctamente =) – bloparod

+0

También tuve que eliminar los paquetes NuGet de mi carpeta de paquetes. – bloparod

2

Así resulta que el problema es TFS:

estaba añadiendo los nuevos proyectos de Internet para una solución que estaba en TFS, pero en el momento en mi servidor TFS no estaba disponible debido a no tener acceso a internet. Como VS no podía ponerse en contacto con TFS, estaba retirando la instalación de esos paquetes desde la tienda local. de ahí mi problema. Los he agregado esta mañana con acceso a Internet y ha funcionado bien.

Moraleja de la historia, asegúrese de que puede acceder TFS antes de añadir estas plantillas de proyecto en una solución controlada por la fuente.

0

instalar estos paquetes con NuGet

0

Tengo este problema, con exactamente estas referencias que faltan, cuando me moví un proyecto, ya que fue creado en el directorio padre de la solución.

No pude resolver esto manipulando la configuración de NuGet. Parecían que estaban instalados bien.

Luego cambié el nombre de mi proyecto original y creé un nuevo proyecto con el nombre original. Esto construido correctamente. Luego eché un vistazo a los archivos .csproj y descubrí que las rutas sugeridas habían cambiado. Estas son rutas relativas, lo que explica por qué se volvieron inválidas.

Así

<Reference Include="Newtonsoft.Json"> 
    <HintPath>..\<some parent directory>\packages\Newtonsoft.Json.4.5.6\lib\net40\Newtonsoft.Json.dll</HintPath> 

se habían corregido a:

<Reference Include="Newtonsoft.Json"> 
    <HintPath>..\packages\Newtonsoft.Json.4.5.6\lib\net40\Newtonsoft.Json.dll</HintPath> 

Creo que se puede hacer esto manualmente.

Cuestiones relacionadas