Tag: 程序集

大会版本的详细信息

我们将在每个库中的Assembly.cs中找到Assembly版本。 [assembly: AssemblyVersion(“1.0.0.0”)] [assembly: AssemblyFileVersion(“1.0.0.0”)] 我的问题是1.0.0.0是什么意思? 谢谢

无法加载{myassembly}导入的过程

当运行prorgam时,我似乎错过了一个库,当我启动项目的输出时,我在启动时遇到exception。 A first chance exception of type ‘System.IO.FileLoadException’ occurred in mscorlib.dll An unhandled exception of type ‘System.IO.FileLoadException’ occurred in mscorlib.dll Additional information: A procedure imported by ‘my assembly, Version=xx.1.1.0, Culture=neutral, PublicKeyToken=7292581204d9e04a’ could not be loaded. ‘ScriptX.vshost.exe’ (Managed): Loaded ‘C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll’, No symbols loaded. 我的问题是:如何确定哪个库丢失,因为此时我看不到传递给的值: mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) + 0x3a bytes

如何获得程序集的命名空间?

考虑我有一个汇编(类库dll),我已使用以下代码加载, Assembly a = Assembly.LoadFrom(@”C:\Documents and Settings\E454935\My Documents\Visual Studio 2005\Projects\nunit_dll_hutt\for_hutt_proj\bin\Debug\asdf.dll”); 我需要得到大会的类型。 为了得到类型我需要程序集的命名空间。 Type t = asm.GetType(“NAMESPACE.CLASSNAME”,false,true); 我怎样才能在上面的行中获得命名空间。?! 为了获得命名空间 ,我需要获取类型..? Type.Namespace; 即我需要获得可用于获取其类型的程序集的命名空间。 提前致谢

如何找出处理请求的程序集

我有一个Web解决方案,它包含两个项目( A和B ), B引用A。 在A我有一个Html扩展方法,显然可以从A或B调用。 我的问题是,一旦调用该方法(通常是从局部视图),方法内部是否有一种方法可以确定调用是来自程序集A还是程序集B而不传递任何内容? 我试着看看我是否可以用HttpContext.Current.Request做任何事情,但找不到任何有用的东西。 我可以获取URI,但仍然没有告诉我发起Request的文件位于哪个程序集中。 谢谢你的答案 – 该方法返回一个字符串,字符串来自string.resx文件,我有一个每个程序集。 这就是为什么我需要知道要访问哪个文件以返回字符串。 由于每个程序集在启动时“注册”自己,如果我添加一个新的程序集,我的方法不会改变,因为它只会查找程序集。实际上我的整个项目不会改变。 我之前没有引入另一个参数的原因是b / c它将意味着大量的变化,老实说我没有看到好处。 虽然我看到你的观点并且我普遍同意它,但我认为在我的情况下,并不是该方法返回不同的东西,它只是根据程序集获取正确的资源文件。

如何确定DLL是托管程序集还是本机(防止加载本机DLL)?

原标题:如何防止从.NET应用程序加载本机dll? 背景: 我的C#应用​​程序包括一个插件框架和通用插件加载器。 插件加载器枚举应用程序目录以识别插件dll(实质上它此时搜索* .dll)。 在同一个应用程序目录中是一个本机(Windows,非.NET)dll,间接地,其中一个插件dll依赖于它。 插件加载器盲目地假设native.dll是.NET程序集dll,只是因为它只检查文件扩展名。 当它尝试加载本机dll时,抛出exception: “无法加载文件或程序集’native.dll’或其依赖项之一。模块应该包含程序集清单。” 如果插件加载失败,我基本上创建了一个诊断报告,所以我试图避免让这个日志填满关于无法加载本机dll的消息(我甚至不想尝试)。 问题是: 是否有一些.NET API调用,我可以用来确定二进制文件是否恰好是.NET程序集,以便我不会尝试加载本机DLL? 也许从长远来看,我会将我的插件移动到一个子目录,但是现在,我只想要一个解决方案,不涉及在我的插件加载器中硬编码“native.dll”名称。 我想我正在寻找某种静态的Assembly.IsManaged()API调用,我忽略了……大概没有这样的API存在?

如何创建和使用仅限.NET元数据的“参考组件”?

从3.0版开始,.NET在C:\ Program Files \ Reference Assemblies \ Microsoft ….下安装了许多不同的“引用程序集”,以支持不同的配置文件(比如.NET 3.5客户端配置文件,Silverlight配置文件)。 其中每个都是一个正确的.NET程序集,只包含元数据 – 没有IL代码 – 每个程序集都标有ReferenceAssemblyAttribute 。 元数据仅限于适用的配置文件下可用的那些类型和成员 – 这就是intellisense显示一组受限制的类型和成员的方式。 在运行时不使用引用程序集。 我从这篇博文中了解到了一些情况。 我想为我的库创建和使用这样的引用程序集。 如何创建仅元数据的程序集 – 是否有一些编译器标志或ildasm后处理器? 是否存在控制将哪些类型导出到不同“配置文件”的属性? 如何在运行时引用程序集解析 – 如果我的应用程序目录中存在引用程序集而不是’真正的’程序集,而不是GAC中的引用程序集将会探测继续并且我的AssemblyResolve事件触发,以便我可以提供在运行时实际组装? 任何有关我可以了解更多信息的想法或指示都将不胜感激。 更新:环顾一下,我看到.NET 3.0’引用程序集’似乎确实有一些代码,并且引用程序集属性仅在.NET 4.0中添加。 因此,新运行时的行为可能会有所改变。 为什么? 对于我的Excel-DNA( http://exceldna.codeplex.com )加载项库,我通过将引用的程序集作为资源打包到.xll文件中来创建单文件.xll加载项。 打包的程序集包括用户的加载项代码,以及Excel-DNA托管库(可能由用户的程序集引用)。 这听起来相当复杂,但大部分时间都运行得非常好 – 加载项是一个小文件,所以没有安装分发问题。 由于版本不同,我遇到(不是意料之外的)问题 – 如果Excel-DNA托管库的旧版本作为文件,运行时将加载而不是打包的(我永远不会有机会干扰加载)。 我希望为我的Excel-DNA托管部分制作一个参考汇编,用户在编译它们的加载项时可以指向它。 但是如果他们在运行时错误地拥有了这个程序集的一个版本,那么运行时应该无法加载它,并让我有机会从资源加载真正的程序集。

dependency injection可以防止循环依赖吗?

项目#1有一些项目#2引用的接口和类。 现在我想在Project#1中使用Project#2的实现,但vs.net抱怨循环依赖。 如果我在Project#1中使用dependency injection并绑定到Project#2中的实现(因为它遵守接口契约),这是否可行或者我仍然会在运行时获得循环依赖性错误消息?

程序集绑定重定向不起作用

我正在尝试使用以下app.config设置程序集绑定重定向: 我在GAC中使用版本9.0.242.0的计算机上运行该程序,并使用指定的公钥令牌。 CLR似乎甚至没有尝试重定向绑定以使用该版本。 这是我在fuslogvw.exe中得到的: LOG: This bind starts in default load context. LOG: Using application configuration file: \Debug\AssemblyRedirectPOC.exe.Config LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config. LOG: Post-policy reference: Microsoft.AnalysisServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91 LOG: GAC Lookup was unsuccessful. LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices.DLL. LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices/Microsoft.AnalysisServices.DLL. LOG: Attempting download of […]

如何在不使用AppDomains的情况下实现.net插件?

问题陈述:实现一个插件系统,允许覆盖关联的程序集(避免文件锁定)。 在.Net中,可能无法卸载特定程序集,只能卸载整个AppDomain。 我发布这个是因为当我试图解决问题时,每个解决方案都参考了使用多个AppDomain。 多个AppDomain很难正确实现,即使在项目开始时进行架构也是如此。 另外,AppDomains对我不起作用,因为我需要跨域传输Type作为Speech Server worfklow的InvokeWorkflow活动的设置。 不幸的是,跨域发送类型会导致程序集注入本地AppDomain。 此外,这与IIS相关。 IIS具有卷影复制设置,允许执行程序集在加载到内存时被覆盖。 问题是(至少在XP下,没有在生产2003服务器上测试)当您以编程方式加载程序集时,卷影副本不起作用(因为您正在加载DLL,而不是IIS)。

C#:如何从GAC加载程序集?

我在GAC中有“mycomp.myassembly.dll”但Load和LoadFrom会抛出找不到文件的exception,而LoadWithPartialName则返回null。 我正在做以下事情: AssemblyName name = new AssemblyName(); name.Name = “mycomp.myassembly.dll”; Assembly assembly = Assembly.Load(name); 用于mycomp.myassembly.dll文件的FileNotFound失败,并且 Assembly assembly = Assembly.Load(“mycomp.myassembly.dll”); 完全相同的消息失败了。 我仔细检查了汇编是否在GAC中(甚至再次使用gacutil / if)并且它在所有其他情况下都有效,我自己无法加载它。 我在这做错了什么? 我错过了什么吗?