Tag: 程序集

是否可以将同一assembly的不同版本引用到单个项目中?

在我的解决方案中,我有几个使用Log4Net(1.2和2.5)的项目。 然后我有一个项目,我在那里进行所有unit testing(其他项目)。 所以我的情况取决于我测试/模拟我需要Log4Net 1.2或2.5。 我读过你可以在应用程序中支持不同版本的单个程序集(使用代码库等),但是甚至可以将单个程序集的不同版本支持到项目中吗? 如果是这样,怎么样? 编辑: 这是一个很小的(2个类,2个方法,2个构造函数)项目,显示了我的问题: https://srv-file1.gofile.io/download/EQFdOs/212.76.254.142/Log4NetMulti.zip (我希望链接工作)

如何检索嵌入的xml资源?

我在我的类库中添加了一个XML文件作为嵌入式资源,方法是使用Visual Studio中的项目属性访问,然后使用Resources | 添加资源| 添加现有文件… 我试图使用以下代码访问该文件,但我不断返回null引用。 有人有主意吗? var path = Server.MapPath(“~/bin/MyAssembly.dll”); var assembly = Assembly.LoadFile(path); var stream = assembly.GetManifestResourceStream(“MyNamespace.filename.xml”);

我可以从命令行运行.NET程序集中的代码吗?

我有一个.NET类库(作为.dll文件),该库包含一个带静态方法的类。 有没有办法从命令行调用该方法?

两个相同类型的对象的InvalidCastException

我有这个奇怪的问题,我无法处理自己。 设计为singleton的mvp-project模型中的类会导致InvalidCastException。 在此代码行中找到错误源,其中反序列化对象被分配给类的实例变量: engineObject = (ENGINE)xSerializer.Deserialize(str); 每当我尝试将一个UserControl添加到表单或不同的UC时,就会发生这种情况。 我所有的UC都有一个特殊的演示者,可以访问上面提到的单例类的实例变量。 这是我在尝试在某处添加UC时得到的结果: ‘System.TypeInitializationException:’MVP.Model.EngineData’的类型初始值设定项引发了exception。 —-> System.InvalidCastException:[A]引擎无法转换为[B]引擎。 类型A源自位于'[…] \ AppData \ Roaming \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies \的上下文’LoadNeither’中的’MVP.Model,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null’ uankw1hh01 \ MVP.Model.dll”。 类型B源自位于'[…] \ AppData \ Roaming \ Microsoft \ VisualStudio \ 9.0 \ ProjectAssemblies \的上下文’LoadNeither’中的’MVP.Model,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null’ […]

为类库挂钩“OnLoad”

有没有人知道是否有办法挂钩到“OnLoad”事件,以便在程序集加载时运行某些操作? 具体来说,我正在为应用程序创建一个插件。 插件的DLL被加载并且对象开始被使用,但问题是我需要在发生任何事情之前动态加载另一个程序集。 此程序集无法复制到应用程序的目录中,并且必须对其保持不可见。

安装文件的位置 – Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5

请耐心等待我,我会尽可能清楚地解释。 我创建了一个新项目(类库),其目标是4.5而不是客户端配置文件4.5。 我添加了一个引用“System.Runtime.Serialization”,属性表明它位于“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5 \ System.Runtime.Serialization.dll”的位置 在我的电脑上,使用msbuild编译构建脚本可以很好地编译。 在使用团队城市的构建服务器上 – 它抱怨 错误CS0012:类型’System.Object’在未引用的程序集中定义。 您必须添加对程序集’System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a’的引用 buildserver安装了完整的.net框架 – “dotnetfx45_full_x86_x64.exe” 唯一一次构建的是我将我的“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5”版本复制到目标机器上。 我已经使用此链接进行了检查并安装了.net 4.5 – http://myspworld.wordpress.com/2012/10/18/how-to-check-if-net-4-5-is-installed-on-a -服务器/ 我问两个问题:1。如何安装? 2.如果它确实在这个位置找到它肯定应该在GAC中查找? 将不胜感激任何帮助。

C#命名空间和程序集最佳实践

C#:在将解决方案划分为名称空间和程序集时,是否有任何指导方针和最佳实践? 名称空间通常应该嵌套,顶层名称空间中的最低级别和基础类是什么? 一般会有一个名称空间到一个程序集吗? 在一个名称空间中有多个程序集或在一个程序集中有多个名称空间是他们的任何陷阱。 多个组件或非常大的组件是否有编译时间/运行时间的惩罚?

C#动态加载/卸载DLL Redux(当然使用AppDomain)

我已经阅读了Stack Overflow上这个问题的许多不同版本,以及3个不同Google搜索教程的首页上的每个蓝色链接,以及MSDN(除了执行程序集之外还有点浅薄) 。 我只能想到我努力让Tao作为一个好的测试用例,但请相信我,我尝试过一个简单的字符串返回,一个double,一个带参数的函数。 无论我的问题是什么,都不是道。 基本上我想在GLPlugin命名空间中创建Draw类的testLibraryDomain.CreateInstance() 。 if( usePlugin ) { AppDomain testLibraryDomain = AppDomain.CreateDomain( “TestGLDomain2” ); //What the heck goes here so that I can simply call //the default constructor and maybe a function or two? AppDomain.Unload( testLibraryDomain ); } Gl.glBegin( Gl.GL_TRIANGLES ); 我知道一个事实: namespace GLPlugin { public class DrawingControl : MarshalByRefObject { public […]

.NET跨组件性能命中

我正在阅读Bill Wagner的书“ Effective C#” 。 在第32项中,他主张开发人员创建更小,更有凝聚力的组件,可以更容易地重用。 然而,在同一个项目中,他说: …额外的安全检查也是跨程序集边界完成的。 来自同一程序集的所有代码具有相同的信任级别(不一定是相同的访问权限,但具有相同的真实级别)。 每当代码流穿过程序集边界时,CLR都会执行一些安全检查。 程序流越过汇编边界的次数越少,效率就越高……这些性能问题都不能阻止您分解太大的程序集。 表现罚款很轻微。 我的问题是,是否对Foo.dll中的每个方法调用执行了额外的安全检查,还是仅在第一次加载程序集时执行? 谢谢

序列化assembly。 是否需要?

我有一个.net 2.0 c#ClickOnce应用程序,它通过Web服务连接到它的数据。 我被告知可能加速应用程序的一种方法是事先生成序列化程序集。 我在这方面有几个问题。 是否生成序列化程序集的默认设置是Auto。 VS2005使用什么标准来决定是否生成序列化程序集? 看起来它不会在Debug配置下生成,但它在Release配置下生成,但我无法确定并且无法在任何地方获取信息。 序列化程序集实际上是否改善了应用程序的启动? 具体来说它有什么改进? 我真的需要序列化程序集吗?