草庐IT

c# - 整个程序集的静态构造函数

我的程序集中有许多入口点,我希望在运行此程序集中的任何其他代码之前,每个AppDomain执行一次一些初始化代码。最好的方法是什么?我看到的一个解决方案是拥有一个带有静态构造函数的类,并继承我从中获得的每个入口点。像这样:publicclassInitializer{staticInitializer(){EnsureInitialized();//Callsinitializationcodeonceandonlyonce}}publicclassEntryPointOne:Initializer,IEntryPoint{//Somecodehere}publicclassEntry

c# - 程序集版本匹配是如何工作的?

假设我在GAC中有版本为1.1.1.5、1.1.5.1、1.1.6.2、1.2.1.1和2.1.2.1的程序集。我的应用程序引用了1.1.3.0版本。哪个程序集将在运行时匹配?程序集匹配的实际规则是什么? 最佳答案 如果您的引用需要特定版本,默认情况下,它将在程序集加载时失败,因为该版本不存在。然而,这可以通过AssemblyBindingRedirection进行配置.这里会发生什么,有多种选择,包括:引用可以说它不关心版本控制,在这种情况下加载最新的。你可以configureyourapplication以您指定如何重定向绑定(

c# - .NET 是否为每个程序集创建一个字符串实习生池?

我有这样一种情况,我会遇到很多重复的字符串,这些字符串会在内存中保存很长时间。我想使用String.Intern但我不想侵入任何潜在的应用程序资源,因为我的项目是一个库。这是如何工作的? 最佳答案 字符串的内部表是CLR-scoped:First,thememoryallocatedforinternedStringobjectsisnotlikelybereleaseduntilthecommonlanguageruntime(CLR)terminates.ThereasonisthattheCLR'sreferencetothe

c# - 加载程序集 Xamarin.Android.Support.v4 时出现异常

我正在使用Xamarin.Forms开发visualstudio,我收到以下错误:Exceptionwhileloadingassemblies:System.IO.FileNotFoundException:Couldnotloadassembly'Xamarin.Android.Support.v4,Version=1.0.0.0,Culture=neutral,PublicKeyToken='.Perhapsitdoesn'texistintheMonoforAndroidprofile?Filename:'Xamarin.Android.Support.v4.dll'atXam

c# - 在 F# 中使用程序集属性

我正在尝试将以下构造IronPython模块的C#示例转换为F#。usingSystem;usingIronPython.Runtime;[assembly:PythonModule("my_module",typeof(MyModule))]publicstaticclassMyModule{publicstaticvoidhello_world(){Console.WriteLine("helloworld");}}使用PythonModule允许frommy_moduleimport*,等等。我无法弄清楚如何在F#中应用PythonModule属性。F#文档只讨论与模块相关的程序

c# - 从不同程序集加载合并的 ResourceDictionary 失败

我已将我应用程序的所有ResourceDictionaries放入一个单独的程序集中,并将它们合并到一个ResourceDictionary中,我想将其作为资源包含在我的应用程序中:声明资源:查看VS中的设计器,所有控件都显示为文件中的样式,但是当我尝试启动应用程序时,出现以下错误:"Cannotlocateresource'inputstyles.xaml'."所有文件的构建操作都设置为“页面”,并且两个项目的构建都成功了。我做错了什么? 最佳答案 buildactionshouldbedefinedasResourceorCon

c# - 出于相同目的使用现有 .NET 程序集与命令行工具的优缺点

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我在网上搜索过,似乎找不到与此主题相关的任何内容。我认为应该对此进行一些讨论。我只是找不到它。基本上,我正在寻找的是使用现有.NET程序集来执行(较旧的)命令行可执行文件可以执行的相同操作的充分理由。因此,如果我使用程序集,我会包含它并开始在我的C#代码中使用它。对于我们旧的命令行工具,我会执行Process.Start(...)等等。背景是:我需要对传

c# - 如何从 Visual Studio 2012 项目中删除 Fakes 程序集?

我添加了一个Fakesassembly到VisualStudio2012C#单元测试项目,通过“AddFakesAssembly”引用上下文菜单选项。完全删除Fakes程序集(即撤消我将其添加到项目中)的过程是什么? 最佳答案 从VisualStudio2012RTM开始,要从单元测试项目中完全删除Fakes程序集,您需要:从项目的Fakes文件夹中删除.Fakes文件从项目的(隐藏)FakesAssemblies文件夹中删除.*文件从项目中删除.Fakes程序集引用 关于c#-如何从V

c# - 为什么 regasm.exe 使用错误的 GUID 注册我的 C# 程序集?

我有一个c#程序集,我通过COM从Delphi(win32native)应用程序调用它。这适用于我测试过的所有机器,除了一台。问题是Delphi应用程序在尝试创建COM对象时得到“类未注册”。现在,当我查看HKEY_CLASSES_ROOT\DelphiToCSharp\CLSID下的注册表时,那里列出的GUID与AssemblyInfo.cs中的程序集Guid不同。它应该是相同的-它在安装它的所有其他计算机上都是相同的。我试过regasm/unregisterdelphitocsharp.dll,这会删除注册表项。然后,如果我执行regasmdelphitocsharp.dll,注册

c# - 无法加载文件或程序集 'Oracle.DataAccess 错误

我正在使用C#构建ASP.NET应用程序,我想连接到oracle数据库。我在我的64位MicrosoftWindowServer2008机器上的应用程序中添加了对Oracle.DataAccess的引用。我还在我的机器上安装了ODAC(Oracle数据访问组件)并且Oracle.DataAccess.dll也出现在这条路径上C:\Windows\Microsoft.NET\assembly\GAC_64\Oracle.DataAccess但是当我尝试连接时遇到以下错误:Couldnotloadfileorassembly'Oracle.DataAccess,Version=4.112.