Отсутствие сборок в шаблонах проектов по умолчанию
Я установил 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>
Я думаю, вы тоже могли бы это сделать вручную.