我已使用完整安装选项安装了VS 2012 Premium。当我创建一个新的asp.net项目,无论是表单,还是任何一个mvc版本,然后尝试构建项目来运行它而不做任何修改我得到错误“缺少程序集或参考”以下内容:
我没有添加这些,它们是模板的一部分。我已经回到安装检查并安装了所有内容,所以我没有留下任何组件。
任何人都知道安装VS2012时我错过了什么?如果我没有遗漏任何内容,我无法相信Microsoft会在其模板中包含对程序集的引用,然后希望您在构建任何项目模板之前下载它们。
答案 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>
我猜你也可以手动完成。