首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全球组装失败

全球组装失败
EN

Stack Overflow用户
提问于 2013-10-02 10:14:39
回答 3查看 101关注 0票数 1

我遵循关于在全球大会中添加我的图书馆类的主要说明。

代码语言:javascript
复制
1 - Create a strong name key pair (/ArchieDLLTesting/bin/Debug/ArchieDLLTesting.snk)
2 - Sign the assembly via Visual Studio (Project property, Sign, Browse that file and Save)
3 - Installing into the GAC (gacutil –I /ArchieDLLTesting/bin/Debug/ArchieDLLTesting.dll)

这是库的代码(对于我所拥有的唯一/单个类):

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ArchieDLLTesting
{
    public class ArchieSayHello
    {
        public ArchieSayHello()
        {
        }

        public string SayHello()
        {
            return "Hello Archimedo";
        }
    }
}

所有行动都成功了!现在,如果我打开一个空项目,然后键入例如:

代码语言:javascript
复制
using ArchieDLLTesting;

它找不到那个程序集。我已经检查了Windows/assembly/GAC_MSIL文件夹,而且这里没有我的DLL。

那么这里出了什么问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-02 10:22:22

似乎您的机器是win 7,那么您的dll在C:\Windows\Microsoft.NET\assembly\GAC_64C:\Windows\Microsoft.NET\assembly\GAC_32.its中取决于您的位版本。看看那些文件夹。任何方式在您的项目中,肯定您should add as project reference的dll。当运行时框架引用GAC的dll时。

更新:

但是,如果您继续更新该GAC项目ArchieDLLTesting,请再次记住GAC。否则,您的应用程序引用该程序集的旧版本的运行时间。在这种情况下,可以使用以下post生成事件将生成事件自动添加到特定项目的GAC中。

代码语言:javascript
复制
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\gacutil.exe" /i "$(TargetPath)"
票数 2
EN

Stack Overflow用户

发布于 2013-10-02 10:17:20

当然,您仍然需要添加对DLL的引用。仅插入using语句并不使用GAC中的DLL。

票数 3
EN

Stack Overflow用户

发布于 2013-10-02 10:25:47

我想你搞不懂GAC的意思:

全局程序集缓存是一个中央存储库,您可以在这里存储许多应用程序所需的程序集。

如果将程序集放置在GAC中,则可以通过需要bin目录中的物理程序集来引用它。

关于框架组装的思考

当你引用它时,你不需要复制它们。

因此,解决方案是将该引用添加到项目中。

无论如何,将装配放在GAC中并不是一个好的做法。

很少有你应该把它们放在那里的情况:

When should I deploy my assemblies into the GAC?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19134639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档