Отсутствие сборок в шаблонах проектов по умолчанию

Я установил VS 2012 Premium, используя опцию полной установки. Когда я создаю новый проект asp.net, будь то формы или любую из версий mvc, а затем попытайтесь создать проект для его запуска без каких-либо изменений, я получаю сообщение об ошибке "Отсутствие сборки или ссылки" для следующего:

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

Я не добавил их, они являются частью шаблонов. Я вернулся к установке, чтобы проверить, и все установлено, поэтому я не оставил компонент.

Кто-нибудь знает, что я пропустил при установке VS2012? Если я ничего не пропустил, я не могу поверить, что Microsoft будет включать ссылки на сборки в своих шаблонах, а затем ожидать, что вы их загрузите, прежде чем создавать какие-либо из своих шаблонов проектов.

Ответ 1

Я думаю, что это проблема с установкой Nuget или локальным кешем.

Все шаблоны VS2012 содержат ссылки на сторонние библиотеки (например, DontNetOpenAuth или Newtonsoft). Вот пример из шаблона проекта 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>

Я знаю, что существует локальный кеш для пакетов NuGet (C:\Users\youraccount\AppData\Local\NuGet\Cache). VS содержит такой кеш, как Entity Framework (C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\NuGet Packages)

По непонятной причине, похоже, что вы создаете новый проект, VS не смог найти эти внешние ссылки.

Итак, в основном попробуйте получить последнюю версию Nuget и попытайтесь получить все эти пакеты хотя бы один раз.

Ответ 2

Так получается, что проблема связана с TFS:

Я добавлял новые веб-проекты к решению, которое было в TFS, но в то время мой сервер TFS не был доступен из-за отсутствия доступа в Интернет. Поскольку VS не мог связаться с TFS, он откатывал установку этих пакетов из локального хранилища. следовательно, моя проблема. Я добавил их сегодня утром с доступом в Интернет, и он отлично работал.

Мораль истории, убедитесь, что вы можете получить доступ к TFS, прежде чем добавлять эти шаблоны проектов в контролируемое с помощью источника решение.

Ответ 3

Установите эти пакеты с помощью NuGet

Ответ 4

У меня возникла эта проблема с именно этими недостающими ссылками, когда я переместил проект, потому что он был создан в родительском каталоге решения.

Я не смог решить эту проблему, манипулируя конфигурацией NuGet. Они выглядели так, как будто они были установлены нормально.

Затем я переименовал свой оригинальный проект и создал новый проект с оригинальным именем. Это правильно построено. Затем я посмотрел файлы .csproj и обнаружил, что пути подсказки изменились. Это относительные пути, которые объясняют, почему они стали недействительными.

So

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

было исправлено:

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

Я думаю, вы тоже могли бы это сделать вручную.