我已经继承了一个SharePoint解决方案,所有项目都有很强的名称并将其部署到GAC. 我发现很难与已签署的项目一起工作,减慢了开发,测试并使调试变得困难. 那么,是否有可能将SharePoint项目,WebParts,CodeBehinds等部署到本地垃圾箱而不是GAC?部署到当地垃圾箱是否被认为是不良的做法? 解决方案 始终建议将BIN目录用于GAC,以适用于所有的WebParts&Code.由于这将限制对代码的信任,因此GAC提供了对代码的完全信任. 部署到垃圾箱后,您可以使用CAS获得所需的权限. 我建议您阅读 注意:您将必须将代码功能处理程序,计时器作业等部署到GAC 其他解决方案 默认情况下,SharePoint Web应用程序仅允许以非常限制的WSS_Minimal信任级别运行.如果我们想将Web部件部署到BIN文件夹中,那么为了运行它,我们必须执行两件事之一:在Web.config中将信任级别设置为WSS_Medium或WSS_F
以下是关于 gac 的编程技术问答
Azure角色可能需要一组Azure特异性.NET组件,例如Microsoft.WindowsAzure.ServiceRuntime和Microsoft.WindowsAzure.StorageClient.事实证明,后者是这对我没有任何意义.要么只是一个错误,要么我没有大图. 是否有一个充分的理由为什么关键程序集将在Azure Instances GAC中不存在,而我必须随身携带我的服务包? 解决方案 这些键Azure组件不是.NET框架的一部分 - 这就是为什么它们不在GAC中的原因.也许将来它们会添加到.NET框架中. Azure不专门用于运行.NET代码. 人们将其用于其他平台,例如Java,php,php,node.js,node.js, python等.在VM角色实例中添加特定于.NET Azure实现的组件是没有意义的. 是的 - 当我刚开始使用Azure时,这也是一个烦恼,但是如果您将此本地发布到没有Azure SDK的机器上也是如此.
有什么想法将GAC DLL迫使引用? 这是我的问题,我经常使用第三方DLL,该DLL将自己注册到GAC中,当我在项目中使用它时,它会从GAC中读取它,当我部署时,我总是忘记添加添加DLL由于不在bin/引用文件夹中. 无论如何都强迫Visual Studio添加DLL,而不是来自GAC? 解决方案 右键单击汇编参考,选择属性,然后将" local"复制到true.这将导致将其复制到部署目录 其他解决方案 在GAC'D组装时,如果一个参考级别深处,则复制本地.例如,如果您有一个引用GAC'D组件的项目,并且该项目如果您的Web项目引用,则是,虽然是,GAC'D组装将被复制到第一个项目的bin文件夹,但不会被复制到您的Web项目的bin文件夹中. 那么,解决方案是将Web项目中的参考直接设置为GAC'D汇编,并指定本地复制.即使Web项目在这种情况下未直接使用参考,它将将其复制到Web应用程序的bin文件夹中. 其他解决方案 在您的参考文献中选择DL
我在工作中创建了一个通用库,并且安装在我们的测试服务器上的GAC中.我最近对其进行了更新,我希望我们所有的应用程序都使用更新.我创建了一个发布者策略组件,并将其与更新一起安装在GAC中,但是当Web应用程序加载Leggett.Common,1.0.0.0时,它并未重定向到Leggett.common,1.1.0.0. . 我在网络驱动器上有一个共同的汇编(实际上有五个,但要保持简单),我在其旁边创建了发布者策略XML文件,然后使用al.exe在该网络中创建发布者策略组件相同的文件夹.之后,我将更新的组件放在GAC中,然后将发布者策略组件放在GAC中. 公共组件是'leggett.common.dll',发布者策略文件是'1.1.leggett.common.policy',发布者策略组件为'policy.1.1.leggett.common.dll'. 发布者策略文件的XML如下:
我们有一个Web应用程序,该应用程序已部署到许多网站上,只有前端更改,共享后端部分具有GAC中的DLL,因此我们只需要更新一个DLL,并且所有网站都会获得更新. . 是否有一种方法可以在/bin文件夹中使用DLL覆盖GAC,以在发布之前测试它们? 解决方案 如果它具有与引用DLL相同的版本号,则使用GAC. 如果您增加了版本号,请重建引用新版本号的网站,将新版本放入/bin目录中,则将使用DLL. 如果您不想更改版本编号,那么您几乎是不幸的. 当.net加载强命名汇编时,首先尝试决定使用哪种版本编号.它首先通过参考来执行此操作,然后查找 Publisher Policies ,,,,,,,,,,然后,它寻找 binding redirects 在配置文件文件中. 这样做之后,它在GAC中寻找汇编,然后在任何指定的代码库,然后探究了DLL的各种文件系统文件夹.如果在其中任何一个步骤中找到正确的版本组件,则停止. 如果您不更改强命名汇编的版本编号
我想知道我应该在GAC中部署哪种类型的组件. 案例1 :如果在我的解决方案中,多个项目使用log4net.dll,那么它应该在GAC中部署吗? 案例2 :如果我使用log4net.dll在机器中部署了多个应用程序. 解决方案 问题:我什么时候应该将我的组件部署到GAC? 答案:从不 实际,诚实,真实的答案:几乎永远不会 讨论 仅当计算机上的多个应用程序使用程序集时,并且当组件是基本的(可能由多个应用程序使用)时,当您签名时,并且您希望几乎永远不会更新该该该内容时集会.也许添加到其中,在每个应用程序中部署多个独立版本的DLL时实际上是有害的. 后者的一个例子是:假设您有2个独立开发和独立部署的独立应用程序.然而,他们可能会互通的可能性.他们将交换...某些东西...在本地机器上远程远程.如果您在GAC中有一个组件,则可以确保这些应用程序可以互通行.但是,如果它们每个都有一个单独的组件版本,则可能无法交换对象. 这是一种罕见的情况,您可能不需要它
在Web.config中是否有可能将特定DLL的本地文件路径位置设置为加载,而不是将这些DLL放在GAC或C:\Windows\System32中. 这将使部署Web服务变得更加容易,而无需与任何一个. 弄乱. 我已经尝试将DLL添加到项目中,但取得了成功.它们是4个Oracle Instant Client DLL. oci.dll orannzsbb11.dll oraocci11.dll oraociicus11.dll 如果有人知道这样做的方法. 编辑: 请注意,请注意DLL的"强烈命名",因此我无法使用其公共密钥引用它们. 另外,由于未能添加. ,它们目前没有直接引用. 解决方案 您可以使用 dependentAssembly 元素指定dll通过codeBase元素居住的位置. 但是,我相信这必须是有效的URL. 示例来自 msdn :
我在这样的解决方案中有一个3个项目: WCF服务:主持几个方法 类库:通过返回其肥皂客户端的实例 ,用作通往WCF服务的门户 WPF应用程序:通过引用的类库消费服务方法 一切正常工作...应用程序正在通过图书馆访问肥皂客户端的实例,并相应地消费方法. 现在,我签署了我的汇编,所有内容仍在编译中,当我添加新方法并在库中更新服务参考时,新方法会在应用程序中出现...但是在运行应用程序并尝试使用方法时, A MissingMethodException被抛出: 找不到方法: 'musicdata.entities.user dbaccess_gateway.dbinteraction_service.dbinteractiongatewaywayclient.user_login(System.String, System.String)'. 这是其失败的行: var user = WSGateway.MR_WebService.User_Login(
我试图在Visual Studio 2010命令提示符上的缓存中添加一个组件.我会遇到此错误"将汇编添加到缓存中:尝试安装没有强名称的程序集".我正在从WCF服务应用程序listTasks2添加ListTasks2.dll汇编2.我从来没有一个类似的项目遇到这个问题,所以为什么现在要提出一个问题? 注意:我尝试在Visual Studio中签名,但仍然不起作用.我想知道这可能是一个许可问题.我使用了不同的用户凭据,并且能够添加一个组件.捕获是我加载了VS解决方案,该项目签署了组件.我应该只创建一个钥匙对吗? 解决方案 只有可以安装在GAC中的强名组件.有关如何创建一个强名组件的信息,请参见如何:签署具有强名称的组件. 其他解决方案 这个问题似乎比需要的要困难得多,更弯道. 我在这里找到了一个非常可实现的解决方案: 让我轻松地工作,我将目录更改为C:\temp - 对我来说,这比直接在提到的文件夹中运行要好得多,这可能是因为文件权限在这样的地方更容易访
我试图通过使用同事以前写过和工作过的PowerShell脚本来将TFS构建在一起,该TFS构建在不同的TFS集合中启动另一个构建.但是,此脚本是在VS 2015 Professional上编写和测试的,我正在使用2017 Enterprise.当我在构建中运行此脚本时,我会收到以下错误: Unable to find type [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory] 当它击中以下内容时: $tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($serverName) 我已经浏览了C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\T
我正在尝试将包含Oracle ODP.NET库的VS2013项目部署到Windows 2008 IIS服务器,并收到错误"无法加载'oracleinternal.common.common.common.configbaseclass'来自汇编'oracle.manageddataaccess,版本,版本= 4.121.2.0.'"从我在线发现的,这是由于项目的ODP与GAC中具有ODP的服务器之间的冲突所致.然后,说明将删除GAC中的ODP.服务器上的GAC中有Oracle DLL. 99%的人肯定,DLL在GAC中遇到了先前尝试在该盒子上设置Oracle的尝试,因为该服务器上没有其他项目应使用Oracle.因此,我们应该安全地将其从GAC中删除. 但是,gacutil.exe仅在Visual Studio中可用,我们不允许将Visual Studio安装到服务器上. 那么,我们如何从GAC中卸载Oracle DLL,而无需在服务器上使用gacutil.exe?我们可以将它
我有一个有关2个CLR版本的问题,即.NET Framework的版本2和版本4,该版本使用不同的GAC位置.我有一个客户端应用程序,该应用程序从V2 GAC(C:\ Windows \ Assembly)中引用一个汇编" X".我现在正在更新汇编" X"以在.NET Framework的V4上运行(C:\ Windows \ Microsoft.net \ Assembly),但是,我不想重新编译客户端应用程序.注意,在安装TO V4 GAC之前,将" X"汇编" X"从V2 GAC中删除. 是否可以创建一个发布者策略文件,该文件将用于驻留在CLR版本2版本的CLR版本4中的程序集重定向?如果是这样,如何实现? 我已经搜索了MSDN,并了解汇编插入元素上有一个Appliesto字段,您可以在其中指定.NET Framework的版本,但这似乎包含整个绑定. 我想要的是:
我现在已经去了Visual Studio 2010 Beta 2 我已经使用了几天,但是现在我无法添加GAC中的参考. ( http://bildr.no/view/549966 ) 对不起,因为这不是直接的发展问题,但我不确定在哪里问. 有人知道如何解决此问题吗? 解决方案 检查全局组装缓存.您可能做了非常非常糟糕的事情. 编辑 我注意到您正在使用Silverlight: c:\ program Files \ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ V4.0 我找不到microsoft.csharp.dll我只能找到使用Microsoft.visualbasic.dll. Silverlight 4的C#DLL位于哪里?我无法在计算机上找到它. 取自: http://alpascual.com/blog/a-few-issues-with-sil
每当我在库课上进行编辑时,我都会对其进行编译以获取更新的DLL. 但是,为了在使用此库的项目上进行有效的编辑,我必须执行命令: gacutil –I 并回收游泳池.回收池可以是可以的,但是我可以自动化gacutil的过程吗? 在VS上有办法还是没有解决方案?我每次都需要这样做吗? 解决方案 如果您不断更新该项目,则可以使用以下构建的事件将构建事件自动添加到该特定项目上的GAC. GAC您的修改后的dll.Just copy and past following line with zero modification "%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\gacutil.exe" /i "$(TargetPath)" ,但请确保在该路径中gacutil.exe
我有一个Visual C#2010 Express Install.构建了签名的.NET 4.0 DLL.现在,我需要将其纳入GAC.我在64位远景上.有人知道是否有gacutil支持4.0框架?关于将其进入GAC的其他建议? 我尝试拖动到C:\ Windows \ soundmanbly中,每当我这样做时,它似乎都要复制;但是,它没有复制,也不会产生任何错误消息. 我无法创建一个设置/部署项目,因为它似乎没有能力. 解决方案 .NET Framework 4.0的Gacutil随附Windows SDK v7.0a.我相信此版本的SDK目前仅在Visual Studio 2010 RC中分发. 更新: Windows SDK的最新Versjon v7.1,可用于 gacutil.exe位于\Program Files\Microsoft SDKs\Windows\v7.1\Bin文件夹中.
我在Visual Studio 2010中有一个解决方案,该解决方案由3个项目组成. 我为我的SharePoint 2010自定义计时器作业,我的自定义计时器作业使用的一个项目(项目A)以及项目A. 使用的另一个项目(项目B) 问题是,当我打包项目时,WSP仅将自定义计时器作业安装到GAC.是否有某种方法可以安装所有依赖的DLL? 解决方案 您必须将这些DLL(项目参考)手动添加到WSP项目的清单中. Visual Studio中有一个UI可以为您提供帮助,无需直接修改XML. 步骤: 在您的WSP项目中的解决方案资源管理器中找到Package文件夹. 双击Package.package文件以打开包装设计器. 在屏幕的底部单击"高级";显示"其他组件"的屏幕将打开. 单击"添加",然后选择"从项目输出中添加汇编". 选择汇编和部署模式(GAC或WebApplication = bin文件夹). 在此对话框中,您还可以注册关联的安全控件和资源.另
我在GAC中注册了一个DLL,其中有一个错误(v4.2.0). 因此,我已经修复了该错误,仅更新了文件版本(v4.2.1)(保持汇编版本,v4.2.0)并构建了一个新的MSI软件包. 问题是DLL未安装在GAC中.我通过右键单击C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MyDLL\v4.0_4.2.0.0__2269313d92725976中的dll并检查了文件版本,该文件仍然没有v4.2.0. 但是!如果我卸载了第一个版本,然后安装新的DLL,则可以在GAC中安装正常. 我以错误的方式接近这一点吗?我们的应用程序设置为使用特定版本,因此仅创建汇编版本v4.3.0并将其安装在GAC无法工作中. 更新 我已经找到了有关出版商政策的文章( http://support.microsoft.com/kb/891030 )并正在尝试.我已经生成了政策组件.但是,当我尝试将其添加到设置项目=( )时,Visual Stu
我已经安装了Visual Studio 2011 Beta,并发现我正在研究的网站自此停止工作.有人建议从GAC中有一个MVC或Razor装配,它正在加载和接管.我该如何检查? 解决方案 以调试模式运行应用程序,并在Visual Studio中观看Output window.它将在加载时列出每个组件,您将通过其完整的文件路径轻松识别GAC组件. 其他解决方案 只是想让我运行时做.这个想法是 - 查看 insplander.globalassemblycache 所有已加载的MVC组件的属性. 将以下代码段放在Page_Load()中的某个位置,并在文件中查看是否从GAC加载了特定的组件: using System.Linq; var items = AppDomain.CurrentDomain .GetAssemblies() .Where(a => a.FullName.C