标签: gac

安装包:无法添加对'System.Runtime'的引用

我正在尝试使用该命令在我的项目中安装Autofac nuget包

Install-Package -Prerelease Autofac
Run Code Online (Sandbox Code Playgroud)

但它失败了,错误

Install-Package : Failed to add reference to 'System.Runtime'. Please make sure that it is in the Global Assembly Cache.
Run Code Online (Sandbox Code Playgroud)

我已经尝试重新安装.NET Framework 4.5.2(这是我的项目所针对的版本),但得到消息"已经安装了.NET Framework 4.5.2".然而,搜索C:\Windows\assembly\对于System.Runtime.dll没有找到任何精确的匹配(虽然也有少数情况下System.Runtime.ni.dll它(似乎表明,),它们实际上是同一个组件......).

我该怎么办?

项目配置

更新:显然我对GAC的位置感到困惑.艾米开悟了我,C:\Windows\Microsoft.NET\assembly而我找到了System.Runtime.dll.为什么不用Visual Studio?

.net c# gac

20
推荐指数
2
解决办法
3万
查看次数

找不到System.Net.Http.Formatting dll

我有一个干净的Visual Studio 2015 RC安装.我没有安装VS2013.

我加载了一个解决方案并且System.Net.Http.Formatting引用被破坏了,当我尝试添加引用时,我没有在GAC中找到它.

.net gac vs-2015-preview

18
推荐指数
1
解决办法
2万
查看次数

17
推荐指数
3
解决办法
3万
查看次数

.NET程序集加载优先级

我有一个包含3个项目(GUI,BL和DAL)的解决方案.DAL程序集已在GAC中签名和部署.

当我构建解决方案时,编译DAL并将程序集放在主项目的bin文件夹中.但是当我运行应用程序时,它会加载GAC版本而不是本地版本.为什么是这样?

我意识到,因为GAC中的版本不是最新版本,并且有些方法丢失了,尽管编译得很好.

GAC是否优先于本地bin文件夹?

事先提前

.net assemblies gac

17
推荐指数
2
解决办法
6828
查看次数

基于GAC内容设置的.NET参考"复制本地"真/假

我们在Win Forms项目中遇到了一个非常有趣的问题.它已经解决了.我们知道发生了什么,但我们想知道它为什么会发生.这可能有助于将来遇到类似问题的其他人.

WinForms项目在我们客户的两台PC上失败了.该错误是一个模糊的kernel.dll错误.该项目在另外3台PC上运行良好.

我们发现我们的发布文件夹中缺少.DLL(log4net.dll - 一个非常流行的开源日志库).它以前在我们的发布文件夹中.为什么在最新版本中缺少它?

它丢失了,因为我必须在我的开发盒上安装了一个程序,该程序使用了log4net.dll,并将其添加到全局程序集缓存中.

当我检查解决方案对log4net.dll的引用时,它们被更改为"copy local = FALSE".它们必须自动更改,因为我的GAC中存在log4net.dll.

这是我的问题开始的地方:

为什么我对log4net.dll的引用从COPY LOCAL = TRUE更改为COPY LOCAL = FALSE?我怀疑是因为它是由另一个程序添加到我的GAC中的.

我们怎样才能防止这种情况再次发生?现在,如果我安装一个使用公共库的软件并将其添加到我的GAC,那么引用该DLL的我的SLN将从Copy Local TRUE更改为FALSE.

.net log4net assemblies gac reference

17
推荐指数
1
解决办法
2万
查看次数

是否可以在没有FullName的情况下从GAC加载程序集?

我知道如何从文件名加载程序集,也从GAC加载程序集.由于我的.msi文件会将一个dll项目放入GAC,我想知道是否有可能从GAC加载它而不知道FullName(我的意思是只是使用程序集名称,甚至是dll文件名),因为我必须从另一个项目加载此程序集.

c# load assemblies gac

17
推荐指数
1
解决办法
5897
查看次数

强制ASP.NET应用程序从bin而不是从GAC加载程序集

有没有办法强制我的asp.net应用程序从本地bin目录加载程序集,因为在gac中有另一个旧版本的程序集具有相同的名称?

我无法删除gac版本,因为其他应用程序正在使用它,我在将新版本添加到gac时遇到一些困难.

asp.net binary gac

16
推荐指数
2
解决办法
2万
查看次数

为什么办公室PIA没有正确安装到GAC?

我目前正在研究ac #project,我需要访问Outlook.开发工作是在两台不同的机器上完成的,其中一台机器安装了办公室,另一台则没有.我之前曾询问如何针对outlook com对象编译我的项目,其中一条评论建议我针对办公室主互操作程序集或PIA进行编译.在我下载的Office 2007 PIA中,有一个msi文件,应该为Office的不同部分安装许多PIA.我的问题是,这似乎不会发生.打字后,在我办公室的机器上

msiexec /i o2007pia.msi
Run Code Online (Sandbox Code Playgroud)

在提示符下,Windows安装程序启动,并显示一个消息框,显示"请等待Windows配置Microsoft Office 2007主互操作程序集.收集所需信息"以及大约33%的进度条,之后它将消失,之后

gacutil -l microsoft.office.interop.outlook
Run Code Online (Sandbox Code Playgroud)

Office 2007没有产生任何结果(我得到一个结果,版本为10.0.4504.0,是早期安装尝试与Office版本错误的结果.但Office 2007 PIA具有主要版本12.)

我看到了几个可能的解释,其中没有一个我真的相信:

  • GAC无法处理同一程序集的多个版本,因此不允许我安装较新版本.

  • 不知怎的,我不满足要求.这些基本上都是XPsp2,以及.Net 1.1或更高版本,我都有.要求部分还提到,下载适用于Office 2007,我没有安装,但我不认为这是一个要求.这既是因为没有被指定为要求,而且因为Hans Passant对我原来的问题的评论非常肯定PIA可以专门用于没有安装Office的开发,所以没有任何意义办公室作为先决条件.

那么有没有人知道为什么Office 2007 PIA没有正确安装,或者我能做些什么来接近答案?如果您需要更多信息,请告诉我.谢谢.

.net windows-xp gac com-interop office-pia

16
推荐指数
1
解决办法
1万
查看次数

全局程序集缓存中的Microsoft.SqlServer.Types.dll?

我目前正在努力解决由其Microsoft.SqlServer.Types及其相关的非托管库引起的部署问题,SqlServerSpatial110.dll这两者都适用于Microsoft SQL Server 2012.问题很容易解决,只是典型的DLL缺失问题,但我试图决定处理这些依赖关系的完美方法.

首先,我必须声明我不同意手动部署任一库(通常通过将它们复制到项目的输出目录中,或者可疑地将其复制到System32自身中)的流行观点是正确的.Microsoft为这些文件提供可再发行的MSI安装程序,这些安装程序将这些文件放入系统位置.很明显,他们希望我们依赖于单独安装的可再发行组件,或者作为MSI本身内置的经过试验和测试的依赖机制的一部分.

在发布时,可以从以下网址下载这些可再发行组件的最新版本:http://www.microsoft.com/en-gb/download/details.aspx?id = 43339

因为SqlServerSpatial110.dll,似乎没有任何问题.MSI安装程序(特定于平台)将文件放入任一Windows\System32Windows\SysWOW64适当的一切,一切都很好.

托管包装器库Microsoft.SqlServer.Types.dll更令人困惑.

在我看来,该文件被放入全局程序集缓存 - 运行MSI后,在我的机器上,我可以看到它位于,C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types\11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Types.dll该文件具有正确的版本和修改日期.

奇怪的是,我无法在Visual Studio的参考浏览器或Windows资源管理器中直接看到它 - 只有我在Mysicsoft的老式文件系统搜索工具中才能看到它.为什么我看不到它?

由于该文件几乎在GAC中,我猜测引用它的项目应该制作它的本地副本 - 它们应该依赖它在目标系统上.我测试了这个假设并且它有效:

  1. Microsoft.SqlServer.Types.dll从其位置手动复制C:\Windows\assembly\GAC_MSIL
  2. 添加对副本的引用.
  3. 确保引用已Copy Local设置为False
  4. 构建项目并确保Microsoft.SqlServer.Types.dll输出中绝对不存在.
  5. 测试项目...... 没问题!

因此,如果可以在运行时从GAC解析程序集以满足此依赖性,那么为什么在添加引用时它不会显示在引用浏览器中?为什么我必须将其从GAC中复制出来并参考副本?

在我看来,理想的工作流程是这样的:

  1. 在开发计算机上安装可再发行的MSI.
  2. 如果您的产品是通过MSI部署的,或者如果您正在使用"xcopy"部署手动安装产品,请确保在目标计算机上安装可再发行组件,方法是将其列为MSI依赖项.
  3. 参考Microsoft.SqlServer.Types使用参考浏览器就像任何框架库从GAC.(默认Copy Local设置为False.) …

sql-server dll gac spatial

15
推荐指数
1
解决办法
2万
查看次数

无法加载文件或程序集'System.Net.Http'

1.启动应用程序时出错

Could not load file or assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Stack Trace: 


[FileNotFoundException: Could not load file or assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.]
   System.Web.Http.GlobalConfiguration..cctor() +0

[TypeInitializationException: The type initializer for 'System.Web.Http.GlobalConfiguration' threw an exception.]
   System.Web.Http.GlobalConfiguration.get_Configuration() +14
   SerilogWeb.Classic.WebApi.PreApplicationStartModule.Register() +10

[InvalidOperationException: The pre-application start initialization method Register on type SerilogWeb.Classic.WebApi.PreApplicationStartModule threw an exception with the following error …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net gac visual-studio

15
推荐指数
1
解决办法
1万
查看次数