标签: assemblies

在.NET中有没有办法启用Assembly.Load跟踪?

在.NET中有没有办法启用Assembly.Load跟踪?我知道在调试器下运行它会给你一个很好的消息,比如"Loaded'assembly X'",但是我希望在调试器外部获得正在运行的应用程序的程序集负载的日志,最好与我的Debug/Trace日志消息混合.

我正在寻找我的应用程序中的各种内容,我基本上想知道触发特定程序集的操作是什么.

.net assemblies

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

使用全局程序集缓存提高速度

如果我有一个1000个asp.net网站,每个网站的/ bin文件夹中有30个DLL.

因此有30,000个DLL.

如果我将一组DLL注册到全局程序集缓存中并且每个站点都在GAC中使用DLL,那么网站/ Web服务器/机器会运行得更快吗?

例如,网站会集体使用更少的内存吗?

dll assemblies gac isolation

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

具有强名称的C#插件架构:一种误解

我有一个服务器可执行文件与Active Directory对话以检索用户信息.除了AD之外,这个exe还允许客户编写自己的插件来与自定义用户目录进行通信.

此可执行文件名称很强.

以下是真实的陈述:

为了使强名称程序集加载另一个程序集,加载的程序集也必须使用相同的键进行签名.

如果程序集没有强签名,则以下代码返回null,没有错误指示程序集未正确签名.请注意,如果我对程序集进行签名,我会得到一个IService实例.这让我相信加载的程序集必须是强签名的.

Assembly assembly = Assembly.LoadFrom(path);

foreach (Type t in assembly.GetTypes())
{
    if (t.GetInterface(typeof(IService).FullName) != null)
    {
      return (Activator.CreateInstance(t) as IService);
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,这是否意味着如果你有一个强签名的程序集和支持程序集插件,它们也必须签名 - 插件编写者必须使用相同的密钥签名?这听起来不对.

最后,假设我有一个实现IService接口的程序集,但也引用了一个程序集,它引用了另一个程序集,每个程序集都用不同的密钥签名.我尝试加载时会发生什么?他们都应该用同一把钥匙签名吗?

c# plugins strongname assemblies key

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

什么是程序集的"AllInternalsVisible"参数:InternalsVisibleTo属性?

我的IntelliSense在[assembly:InternalsVisibleTo("AssemblyName")]声明中提出了一个布尔命名参数"AllInternalsVisible =" .只需将光标放在第二个双引号后面,然后按Ctrl-空格键.那是什么 - 我在MSDN上找不到任何关于它的文档.我正在使用VS2005和.Net 2.0.

作为一个相关的主题,我正在对朋友集合进行一些研究,我认为一旦你授予朋友程序集内部访问权限,朋友程序集就可以访问所有内部结构,你无法真正了解它.这是真的吗,或者有没有办法(如上所述)你可以授予朋友集会访问某些内部类型/成员但不是全部?

c# assemblies internalsvisibleto friend

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

如何使用sn.exe -Vr

从MSDN帮助中,它说-Vr选项是:

Registers assembly for verification skipping.

我的问题是当使用-Vr时,它是否只会更改程序集文件本身,或者它也会更改系统注册表.重要的是我是否应该在开发机器或最终部署的机器中发出此命令.

.net assemblies

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

依赖注入可以防止循环依赖吗?

项目#1有一些项目#2引用的接口和类.

现在我想在Project#1中使用Project#2的实现,但vs.net抱怨循环依赖.

如果我在Project#1中使用依赖注入并绑定到Project#2中的实现(因为它遵守接口契约),这是否可行或者我仍然会在运行时获得循环依赖性错误消息?

c# assemblies dependency-injection circular-dependency

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

如何在一个DLL中包装多个dll

可能重复:
合并.net托管dll

我创建了一个测试项目,其中我从其他项目中引用了一个dll.当我构建我的测试项目时,我看到测试项目和引用的dll有不同的dll.我想将两个dll包装在一个dll中.

我该怎么做.

.net c# dll assemblies

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

Mono.Cecil:从其他程序集调用基类的方法

如何按名称获取MethodReference到基类的方法?

我试过了

type.BaseType.Resolve().Methods;
Run Code Online (Sandbox Code Playgroud)

如果我将包含基类的dll添加到assemblyresolver,它将返回方法.但是,如果我使用添加呼叫

MSILWorker.Create(OpCodes.Call, baseMethod);
Run Code Online (Sandbox Code Playgroud)

(通过从解析的TypeDefinition中预处理方法找到baseMethod),生成的IL不可读,甚至Reflector冻结并退出.

现在有些IL:
如果在类型上调用私有方法:

 call instance void SomeNamespace.MyClass::RaisePropertyChanged(string)
Run Code Online (Sandbox Code Playgroud)

如果在基类型上调用protected方法:

call instance void [OtherAssembly]BaseNamespace.BaseClass::RaisePropertyChanged(string)
Run Code Online (Sandbox Code Playgroud)

那么,我如何使用Mono.Cecil生成后者呢?

inheritance il cil assemblies mono.cecil

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

虽然添加了引用,但找不到命名空间'Smo'

我已将Microsoft.SqlServer.Management.Smo.dll引用添加到我的项目中,但它仍然给出了以下错误.引用的dll位于C:\ Program Files\Microsoft SQL Server\100\SDK\Assemblies路径中.

错误25命名空间"Microsoft.SqlServer.Management"中不存在类型或命名空间名称"Smo"(您是否缺少程序集引用?)

我使用的所有类,如Smo namesapce下的Restore,Serer类也会抛出错误.

请指教.

c# assemblies

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

装饰.NET程序集

这可能是一个长镜头,但.NET的灵活性永远不会让我惊讶,所以这里.

我正在开发一个MVC应用程序,需要在一组程序集中搜索从公共基类派生的类类型.

即我有几个具有活动类型的程序集,这些活动类型都派生自ActivityBase.这些程序集将放在特定目录中.它们有点像插件.由于它们需要在运行时动态加载,因此它们还需要伴随一些依赖项(除非我能找到一种方便的方法来分隔它们,所以也可以自由地加入它们.)

我有代码将遍历此目录中的所有.DLL文件,加载程序集,并遍历程序集中的所有类型以查找派生自ActivityBase的类型.

这很好用.但是,我想避免加载和搜索没有活动的程序集,因为某些依赖项有数千种类型,这就成了性能问题.

所以我想我的问题是,除了文件命名约定之外,是否有任何方法可以"装饰"或使用某种类型的数据标记程序集,这些数据表明它是一个活动程序集,可以在构建时轻松实现自动化在运行时轻松阅读?

还欢迎任何其他处理此问题的建议.

.net c# assemblies

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