10

我已经使用完整安装选项安装了 VS 2012 Premium。当我创建一个新的 asp.net 项目时,无论是表单还是任何一个 mvc 版本,然后尝试构建项目以在不进行任何修改的情况下运行它,我收到以下错误“缺少程序集或引用”:

  • Antlr3.Runtime
  • DontNetOpenAuth.AspNet
  • DontNetOpenAuth.Core
  • DontNetOpenAuth.OAuth
  • DontNetOpenAuth.OAuth.Consumer
  • DontNetOpenAuth.OpenID
  • DontNetOpenAuth.OpenID.RelyingParty-
  • 牛顿软件.Json
  • System.Web.Optimization
  • 网络润滑脂

我没有添加这些,它们是模板的一部分。我已经返回安装进行检查,并且所有内容都已安装,因此我没有遗漏任何组件。

有人知道我在安装 VS2012 时错过了什么吗?如果我没有遗漏任何东西,我无法相信微软会在他们的模板中包含对程序集的引用,然后期望您在构建他们的任何项目模板之前下载它们。

4

4 回答 4

3

我认为这是您的 Nuget 安装或本地缓存的问题。

所有 VS2012 模板都包含对第三方库的引用(例如DontNetOpenAuthNewtonsoft)。这是来自 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,并尝试至少一次获取所有这些包。

于 2012-09-27T11:41:53.197 回答
2

所以事实证明问题是TFS:

我正在将新的 Web 项目添加到 TFS 中的解决方案中,但当时由于无法访问 Internet,我的 TFS 服务器不可用。由于 VS 无法联系 TFS,它正在从本地商店回滚安装这些软件包。因此我的问题。我今天早上通过互联网添加了它们,它运行良好。

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

于 2012-09-28T06:52:40.520 回答
0

使用 NuGet 安装这些包

于 2013-03-15T22:08:00.573 回答
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>

我想您也可以手动执行此操作。

于 2014-07-03T15:19:52.667 回答