Tag: 程序集

程序集绑定和重定向

我有一个引用DLL的EXE – 对于这个例子,我将其称为TestDLL.dll 。 EXE是用C#编写的,DLL是用VB .Net编写的。 我创建了DLL的演示程序集版本 – 例如 – TestDLL.dll版本1.0.0.0。 我想编译EXE并引用演示版DLL(1.0.0.0)。 之后 – 我希望EXE使用相同的DLL,但我将放入任何版本的GAC。 为此,我将DLL引用的“Copy Local”属性设置为FALSE 。 我的目标是例如 – 在编译之后,我将使用汇编版本2.1.6.0放入GAC TestDLL.dll,并且EXE将使用汇编重定向绑定找到它。 为此,我使用了配置文件。 我用这个链接来创建它: http://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.71).aspx 所以我的配置文件看起来像这样: 问题是,在完成所有这些之后,我运行EXE并在访问dll时,我得到了一个着名的错误: System.IO.FileNotFoundException:无法加载文件或程序集’TestDLL,Version = 1.0.0.0,Culture = neutral, PublicKeyToken = 9d8162944bd6fdc7’或其依赖项之一。 该系统找不到指定的文件。 文件名:’TestDLL,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 9d8162944bd6fdc7′ 意思是,EXE找不到我引用的原始DLL 。 我知道我可以“引用”GAC或使用reflection,但我不想 – 因为这个EXE应该只是这样工作。 有谁知道问题是什么以及如何解决? 谢谢

.NET程序集依赖项

也许我错过了一些明显的东西,但…… 我已经构建了一个可重用的通用C#类库项目说(A.dll)引用其他3个程序集说(B.dll,C.dll和D.dll) 但是,如果我想在另一个项目中重用我的组件A.dll,我仍然需要包含对B.dll,C.dll和D.dll的引用。 有没有什么办法可以配置A.dll来构建它的所有依赖项到A.dll所以我不必包含其他3个程序集? 干杯

.NET相当于静态库?

我正在托管代码(主要是C ++ / CLI)中构建一个工具,有两个版本,一个是“普通用户”版本,另一个是“专业版”。 核心代码在两个版本之间是相同的这一事实导致我有点麻烦,因为我想将生成的工具打包为单个程序集(DLL),我不希望必须包含公共的.cpp文件两个版本工具的项目代码。 我宁愿有一个公共代码项目和每个工具版本的项目,并且每个版本的工具项目都依赖于公共代码并根据需要链接它。 在非托管C ++中,我通过将公共代码放在静态库中并将工具的两个版本链接到它来实现这一点。 我似乎无法在C ++ / CLI中使用它。 似乎我被迫将公共代码构建到DLL程序集中,这导致了比我想要的更多的DLL。 因此,总而言之,我无法弄清楚如何在一个项目中构建公共代码并将其与每个最终产品项目链接以生成两个包含公共代码的单个DLL程序集。 我可能做错了但是我试图用netmodules和其他方法来解决这个问题,但是我无法让它工作。 最后,我让它工作的唯一方法是告诉链接器链接公共代码程序集的构建产品而不是有效的结果但是有点像黑客恕我直言。 无论如何,有没有人对我应该如何解决这个问题有任何建议? 编辑:我想我应该提到这样一个事实,即生成的程序集不是100%托管代码,它们包含托管代码和非托管代码的混合,可能在使用C ++ / CLI生成的程序集中非常常见…

装载组件无法正常工作

我尝试在C#中将程序集加载到我的源代码中。 所以我首先编译源文件: private bool testAssemblies(String sourceName) { FileInfo sourceFile = new FileInfo(sourceName); CodeDomProvider provider = null; bool compileOk = false; // Select the code provider based on the input file extension. if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == “.CS”) { provider = CodeDomProvider.CreateProvider(“CSharp”); } else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == “.VB”) { provider = CodeDomProvider.CreateProvider(“VisualBasic”); } else { Console.WriteLine(“Source file must […]

在.NET中解析普通的Win32 PE文件(Exe / DLL)

我需要解析普通的Win32 DLL / Exe并从中获取所有导入和导出以在控制台或GUI(即Win Forms)上显示。 是否可以通过读取其导出/导入表并从中获取托管类型来解析C#.NET中的Win32 DLL / Exe? 由于它是非托管PE,.NET不允许您将非托管PE文件转换为托管.NET程序集,它只生成COM托管程序集。 如何解析这些表并以托管forms获取所有方法(签名)。 (例如,如果char *作为参数,它应显示为IntPtr)。

如何获取基类的所有inheritance类?

class Foo { } class Foo1 : Foo { } class Foo2 : Foo { } 我怎样才能获得所有使用Foo作为基类的类? 在同一程序集中不需要inheritance的类。

程序集的ASP.NET错误

您好我正在创建一个ASP.NET / C#网站,我想使用Ajax Toolkit程序集。 我把它添加到“参考文献”中。 在Default.aspx我有这个: 在设计选项卡中,我可以看到combobox,一切都很好。 但是当我尝试调试应用程序时,我收到此错误: 找不到适合指定文化或中性文化的资源。 确保在编译时将“AjaxControlToolkit.Properties.Resources.NET4.resources”正确嵌入或链接到程序集“AjaxControlToolkit”中,或者所有所需的附属程序集都是可加载和完全签名的。

从全名创建C#类型

我正在尝试从类型全名获取一个Type对象我正在进行以下操作: Assembly asm = Assembly.GetEntryAssembly(); string toNativeTypeName=”any type full name”; Type t = asm.GetType(toNativeTypeName); 我搞砸了,为什么? 程序集是我的可执行文件(.net可执行文件),类型名称是:System.Xml.XmlNode

assembly文件版本没有变化?

我在assemblyinfo.cs类中有代码: [assembly: AssemblyVersion(“1.0.*”)] [assembly: AssemblyFileVersion(“1.0.*”)] 调用System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()工作正常并提供更新版本,但是,当我在Windows资源管理器中查看生成的dll时,右键单击属性,单击“详细信息” tab,fileversion说“1.0.0.0”即使上面的输出说1.0.3489.17621?

如何从特定程序集引用命名空间?

所以这是我的问题。 我的(测试)项目引用了Castle Windsor和Rhino Mocks。 我正在创建一个从Castle.Core.dll程序集实现Castle.Core.Interceptor.IInterceptor的类 在构建Rhino Mocks时,Ayende使用了Castle.Core.Interceptor并在Rhino.Mocks.dll中包含了整个darn命名空间。 所以当我尝试构建时,我得到了错误 类型’Castle.Core.Interceptor.IInterceptor’存在于’c:… \ Libraries \ Rhino.Mocks.dll’和’c:… \ Libraries \ Castle.Core.dll’中 那么我如何指定我想使用Castle.Core.dll中的IInterceptor实例而不是Rhino Mocks中包含的实例?