Dlls未部署到GAC-SharePoint 2013、Visual Studio 2012、.Net FW 4.5。

16
当我在Visual Studio 2012中创建一个简单的SharePoint 2013项目并想要部署它时,它可以成功部署,但是Dll不在全局程序集缓存中。在Advanced选项卡中,我已经添加了要部署的项目程序集。

enter image description here

在不同的测试中,我将程序集部署目标选项设置为全局程序集缓存,并将将程序集包含在包中选项设置为True,并从第一个场景中描述的包中删除了dll。

enter image description here

项目使用的是.NET框架版本4.5。机器是64位虚拟机,Windows Server 2008。我尝试将项目的平台目标更改为X64和Any CPU,但没有成功。我也尝试使用gacutil工具手动添加dll,但它也没有部署成功。这可能与4.5框架有关吗?我也无法手动部署任何在4.5中制作的Dll,但其他所有都可以。有什么想法吗?谢谢。

1
你有不可忽略的证据表明,你检查它是否被存储在全局程序集缓存中的方式是错误的。你没有提到这一点。它已经不在c:\windows\assembly中了。 - Hans Passant
谢谢回复。我正在c:\windows\assembly中检查它,应该在那里,对吧?我使用了两个资源管理器窗口进行测试,一个显示GAC,另一个显示我的DLL文件。我只能将非.NET 4.5制作的DLL移动到GAC中。当将.NET 4.5 DLL移动到GAC时,什么也没有发生。看起来由于某些原因,无法将4.5 DLL安装到GAC中。 - gradosevic
+1 鼓励您在问题中投入更多的精力,提供尽可能多的细节和列出您已尝试过的内容。 - Ryan
你好,能告诉我当我们将“在包中包含程序集”设置为“True”并从包中删除DLL时会发生什么吗? - variable
2个回答

36
我在c:\windows\assembly中查找,应该在那里,对吗? 不,那是.NET 1.0到3.5版本中的GAC目录。 它在.NET 4.0及更高版本中移动到了c:\windows\microsoft.net\assembly中。 您可以使用资源管理器浏览该目录,不再使用扁平化GAC目录视图的shell扩展处理程序。 如果程序集不包含任何非托管代码,则从GAC_MSIL目录开始,您将很容易从那里找到实际文件。

这正是我正在寻找的。非常感谢! - gradosevic
@Hans Microsoft 为什么要采用这种变化?我也遇到了像你说的那些问题。你能给我提供一些参考来解决这些问题吗? - Nithish Inpursuit Ofhappiness

0

我遇到了这个问题,我认为进行IISReset修复了它?

我对我的事件接收器进行了更改。 在包中,我像你一样添加了来自项目输出的程序集。 我在项目属性中将“在包中包含程序集”设置为False。

我部署了,但我的事件接收器更改似乎没有发生。

我运行了IIS Reset,然后就能看到我的更改了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接