缺省项目模板中缺少程序集

时间:2012-09-27 06:40:45

标签: asp.net visual-studio-2012

我已使用完整安装选项安装了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会在其模板中包含对程序集的引用,然后希望您在构建任何项目模板之前下载它们。

4 个答案:

答案 0 :(得分:3)

我认为这是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包含类似于实体框架(C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\NuGet Packages

的缓存

由于不明原因,似乎在您创建新项目时,VS无法找到这些外部参考。

所以,基本上尝试获取最新版本的Nuget,并尝试至少获取所有这些包。

答案 1 :(得分:2)

事实证明问题是TFS:

我正在将新的Web项目添加到TFS中的解决方案中,但当时我的TFS服务器由于无法访问Internet而无法使用。由于VS无法联系TFS,它正在从本地商店回滚这些软件包的安装。因此我的问题。我已经在今天早上添加了它们,可以访问互联网并且工作正常。

故事的道德,确保您可以在将这些项目模板添加到源控制解决方案之前访问TFS。

答案 2 :(得分:0)

使用NuGet安装这些软件包

答案 3 :(得分:0)

当我移动项目时,由于它是在解决方案的父目录中创建的,因此我得到了这个问题,正是这些缺少的引用。

我无法通过操纵NuGet配置来解决这个问题。他们看起来好像安装好了。

然后我重命名了我的原始项目并使用原始名称创建了一个新项目。这构建正确。然后,我查看.csproj文件,发现提示路径已更改。这些是相对路径,这解释了它们为什么变得无效。

所以

<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>

我猜你也可以手动完成。