标签: assemblies

确定加载的程序集

如何确定我的.NET桌面应用程序已加载的所有程序集?我想将它们放在about box中,这样我就可以通过电话查询客户,以确定他们在PC上有什么版本的XYZ.

很高兴看到托管和非托管程序集.我意识到列表会变长,但我打算对它进行增量搜索.

.net dll assemblies winforms

8
推荐指数
1
解决办法
3138
查看次数

如何在Visual Studio网站项目类型中添加引用?

通常,当您添加新程序集时,您必须进入Visual Studio并添加引用(.dll存储在/ bin目录中).

由于本网站即时编译,我是否可以将.dll添加到实时网站,然后在.aspx页面中使用.dll?

目前在Visual Studio中,除非我去"添加引用",否则我看不到.dll.

.net assemblies visual-studio

8
推荐指数
1
解决办法
4816
查看次数

什么是并排组件?

在尝试将Debug安装集安装到测试计算机时,我今天第一次遇到了并排程序集.我最终管理了它,但留下了几个问题:

  1. Whare是Side-by-side汇编?
  2. Windows如何以不同于其他程序集的方式处理这些程序集
  3. 依赖于并排组件的应用程序如何处理这些与普通程序集不同的方式
  4. 在什么情况下可能有人想要创建一个并排的程序集?

.net assemblies side-by-side

8
推荐指数
1
解决办法
3859
查看次数

如何找到呼叫程序的汇编版本?

我在这个应用程序中使用C#.

我有一个DLL包含在我的应用程序中.从这个DLL,我需要找到包含此DLL的主程序的汇编版本.

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()不回报我想要的东西.这将返回DLL的Assembly版本,而不是主程序.

如何从主程序中获取版本信息?

c# dll assemblies version

8
推荐指数
1
解决办法
4633
查看次数

为什么Assembly.GetExecutingAssembly()返回null?

我使用xml文件作为嵌入式资源来加载XDocument.我们使用以下代码从程序集中获取相应的文件:

XDocument xd = new XDocument();
Assembly assembly = null;

try
{
    assembly = Assembly.GetExecutingAssembly();
}
catch(Exception ex)
{
    //Write exception to server event log
}

try
{
    if(assembly != null)
    {
        using(StreamReader sr = new 
            StreamReader(assembly.GetManifestResourceStream("assemblyPath")))
        {
            using(XmlTextReader xtr = new XmlTextReader(sr))
            {
                xd = XDocument.Load(xtr);
            }
        }
    }
}
catch(Exception ex)
{
    //Write exception to server event log
}
Run Code Online (Sandbox Code Playgroud)

因此,当部署代码时,我们偶尔会转到页面,并且不会从嵌入的文档中加载任何内容.当我们检查事件日志时,没有错误.如果用户只是刷新页面,它将加载正常.这让我认为,由于某种原因,assembly = Assembly.GetExecutingAssembly();偶尔会返回null,并且编写代码的方式不是错误.所以,我的问题是为什么会Assembly.GetExecutingAssembly();返回null?我发现有几篇文章谈到有时会出现非托管代码的错误,但是这个应用程序是用C#编写的,并通过安装项目进行部署.

代码最初是在没有错误避免代码的情况下编写的.添加它是为了防止用户获得错误屏幕.异常将写入服务器的事件日志.

c# assemblies embedded-resource system.reflection

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

Web.config更改后,程序集不可用

我正在使用一个自定义框架,它使用反射来GetTypeByName(string fullName)对从数据库获取的完全限定类型名称进行操作,以创建所述类型的实例并将其添加到页面中,从而产生标准的模块化类型.

GetTypeByName是我的一个实用函数,只需迭代Thread.GetDomain().GetAssemblies(),然后执行一个assembly.GetType(fullName)查找相关类型.显然,这个结果会被缓存以供将来参考和使用.

但是,我遇到了一些问题,如果web.config得到更新(并且在一些更可怕的实例中,如果应用程序池被回收)那么它将失去对某些程序集的所有知识,导致无法呈现模块类型.调试显示当前线程程序集列表中不存在缺少的程序集.

为了解决这个问题,我添加了第二个检查,它有点脏,但通过/ bin /目录的DLL进行递归并检查程序集列表中是否存在每个检查.如果没有,则使用Assembly.Load加载它并通过"解决程序集加载上下文问题"修复上下文问题.

这可行,只是看起来(并且我知道这不可能)一些项目仍然可以访问缺少的程序集,例如我的实际Web项目而不是框架本身 - 然后它会抱怨重复的引用已被添加!

有没有人听说过这样的事情,或者有任何想法为什么一个程序集在配置更改时根本不存在?没有一个解决方案,最优雅的解决方法是让bin中的所有程序集重新加载?它需要全部在一个"点击",以便网站访问者除了一个小延迟之外看不到任何差异,因此app_offline.htm文件是不可能的.以编程方式重命名bin中的DLL然后将其命名回来确实有效,但需要IIS用户帐户的"修改"权限,这是疯狂的.

感谢社区可以收集的任何指示!

asp.net reflection assemblies

8
推荐指数
1
解决办法
436
查看次数

部署NetFwTypeLib以管理Windows防火墙

我的Windows服务需要从Windows防火墙创建/删除某些规则.对于这一点,我界面NetFwTypeLib<windows>\system32\hnetcfg.dll通过COM.它在我的64位Windows 7计算机上运行良好,但在另一台64位Windows 7计算机上进行测试会引发以下错误:

Service cannot be started. System.IO.FileNotFoundException:
Could not load file or assembly 'Interop.NetFwTypeLib, 
   Version=1.0.0.0, Culture=neutral,
   PublicKeyToken=null' or one of its dependencies.
   The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,如果我使用我的应用程序嵌入并安装程序集,我会遇到不同版本的Windows以及32位和64位之间的问题.

如何解决这个缺少的装配部署问题?


编辑:这似乎是除了4.0之外的任何目标框架的VS2010问题.有人有解决方法吗?

c# deployment assemblies windows-firewall filenotfoundexception

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

在进行运行时程序集加载时,如何仅查找声明的方法?

我正在进行运行时程序集加载,但我不知道任何类或方法的名称.我不想用我们声明的方法列出我的程序集中的所有类,而不是从System.Object继承的那些类.

这是代码:

string str = "";   
Assembly assembly = Assembly.LoadFile(@"c:\components.dll");    

foreach (Type type in assembly.GetTypes())
{
    if (type.IsClass == true)
    {    
        str += type.Name + "\n";    
        MethodInfo[] methodInfo = type.GetMethods(BindingFlags.DeclaredOnly);

        foreach (MethodInfo mi in methodInfo)
        {    
            str += "\t" + mi.Name + "\n";    
        }    
    }
}

MessageBox.Show(str);
Run Code Online (Sandbox Code Playgroud)

这是components.dll:

public class component01
{    
    public string myName = "component01";
    public string getMyName()
    {
        return myName;
    }
}

public class component02
{    
    public string myName = "component02";

    public string getMyName()
    {
        return myName; …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection load assemblies

8
推荐指数
1
解决办法
3774
查看次数

使用强名称签署DLL的好处

我有一个包含多个c#类库的ac#解决方案.我最近正在做一些研究,建议我的库中输出的程序集应该签名,并使用强名称签名.首先,我想知道我是否最好进步?从这些类库输出的库用于多个其他项目.

如果从我之前的问题建议我是的,我应该签署我的dll,我使用的.snk,这可以用于解决方案中的每个类库吗?或者每个类库必须是一键吗?

c# strongname assemblies .net-assembly assembly-signing

8
推荐指数
1
解决办法
5760
查看次数

显示程序集依赖关系的工具

我开始在一个新项目中工作,在一个解决方案中有许多组件.我还不熟悉程序集依赖性,并且很难确定哪个程序集依赖于另一个程序集.

您是否知道任何能够显示依赖关系列表或更好的可视化图表的工具?

任何帮助赞赏!

.net assemblies

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