带有多个sql_variant参数的SQLCLR自定义聚合
hy, 我有一个关于CLR用户定义的问题,几个月前. 这就像魅力一样.但是现在,我想使用SQL_Variant类型中的两个参数具有相同的功能. 就像我上一篇文章一样,两个函数将是smax和smin,并根据第二个函数返回第一个值. 我发现SQL_Variant类型是C#中的对象类型.但是我很难积累和比较对象. 在不知道类型的情况下比较这两个对象的最佳选择是什么? 解决方案 使用SQL_VARIANT/object时,您可以使用GetType()方法来确定类型,如下所示: [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = false, IsPrecise = true)] public static SqlBoolean GetIfSmallInt(object SomeValue) { return (SomeValue.GetType() == typeof(SqlInt
0 2024-04-16
编程技术问答社区
为什么C#->CIL的每条指令都有一个标签?
在编译C#程序上使用Ildasm.exe时,它表明方法中的每个说明都有一个标签. 例如: IL_0001: ldc.i4.4 IL_0002: stloc.0 IL_0003: ldc.r8 12.34 IL_000c: stloc.1 IL_000d: ldc.r8 3.1415926535897931 IL_0016: stloc.2 IL_0017: ldstr "Ehsan" IL_001c: stloc.3 IL_001d: ret 为什么?执行此操作不是效率低下还是CIL编译器优化这些标签本身? 解决方案 标签不存在于编译的CIL中.为了方便您在分解代码中显示它们. 这些特定的标签对应于指令偏移,而手工制作的代码没有这种限制(标签可能是任意字符串). 其他解决方案 在编译的IL中,没有标签.相反,跳跃指令从以下说明开始时使用相对偏移. 例如,考虑这个微不足道的C#函数: public
0 2024-04-16
编程技术问答社区
从一个.Net 4.x应用程序中反映一个WinRT可执行文件
在控制台应用程序中;如果我执行: Assembly.LoadFrom(@"c:\...\MyWinRTApp.exe") 我得到: System.BadImageFormatException occurred HResult=-2147024885 Message=Could not load file or assembly 'file:///C:\_...\MyWinRTApp.exe' or one of its dependencies. An attempt was made to load a program with an incorrect format. Source=mscorlib 有什么办法解决的? 编辑1 与" Vyacheslav Volkov"的答案有关,我现在进一步迈出了一步,谢谢.但是我现在遇到了一个不同的问题. "assembly.GetExportedTypes()" now throws "Cannot re
0 2024-04-16
编程技术问答社区
如何以编程方式检查C++ DLL文件和C# DLL文件对调试DLLS的引用,以实现测试程序的自动化
我遇到了很多次,需要这是一种自动化方法: 我有多个DLL文件,这些文件一直在构建/更改多个项目使用. 我创建了一个C#应用程序,该应用程序检测是否存在DLL文件并警告操作员(如果不是操作员)并杀死程序.在此C#应用程序中,我希望它也要检查它是否是"调试"版本 - 换句话说,如果它在最终用户计算机上运行,​​它将崩溃. 现在,我一直在搜索高和低的搜索,并找到了一些可能的解决方案,但是它们都掉进了. Assembly.LoadFrom(string)不适合非托管代码.我可以使用它来针对托管DLL文件,而不是C ++. 我认为我可以使用还尝试了我还发现了一些链接,这些链接应该为我提供依赖性沃克的来源.不幸的是,他们都死了.我不认为这很难做,但是无论出于何种原因,我都很难弄清楚这是如何自动化的. 一些对我有帮助的源链接,但它们都没有通过不受管理的汇编数据解决了问题. /em> 如何自动化集成测试? (堆栈溢出) 确定是否确定是否是. 如何判
0 2024-04-15
编程技术问答社区
如何使用ICLRStrongName::StrongNameSignatureVerificationEx方法来识别延迟签名的程序集
任何人都可以建议如何使用 iClrstrongname :: strongNamesignatureverificationExex 方法以识别延迟签名的汇编.我在互联网上找不到任何例子.我不明白如何使用这种方法. 请不要推荐我任何链接,我对网络中可用的不同建议和不同的链接感到沮丧.任何人都可以提供相同的代码样本. 解决方案 我有同样的问题,最后找到了调查的时间.我真的不明白为什么微软没有花时间编写足够的文档. 以下链接非常有用,也包含一个示例项目,即使它也没有回答所有问题: http://clractivation.codeplex .com/ 我将尝试用简短的代码示例回答所有问题.您可以使用这样的东西来验证大会的强名: public bool VerifyStrongName(string assemblyPath, bool force) { if (string.IsNullOrEmpty(assemblyPath)) throw ne
0 2024-04-15
编程技术问答社区
Hololens构建失败-命令AssemblyConverter.exe退出,代码1
更新到最新版本的VS 2017(版本15.3.2),我的HoloLens构建由Unity生成的构建,以使此消息失败: 命令"" c:\ testfile \ holobuild \ vsapp \ unity \ unity \ tools \ assemblyConverter.exe" -platform = uap -lock -lock =" c:\ testfile \ holobuild \ holobuild \ vsapp \ vsapp \ holobuild \ holobuild \ holobuild \ project.lock.lock.json" - 位= 32 -configuration = debug -removedebuggableAttribute = false -uwpsdk = 10.0.15063.0 -path =" -path =". \ debug"" c:\ testfile \ holobuild \ vsapp \ ho
0 2024-04-15
编程技术问答社区
如何以编程方式检查C++ DLL文件和C# DLL文件对调试DLLS的引用,以实现测试程序的自动化
我遇到了很多次,需要这是一种自动化方法: 我有多个DLL文件,这些文件一直在构建/更改多个项目使用. 我创建了一个C#应用程序,该应用程序检测是否存在DLL文件并警告操作员(如果不是操作员)并杀死程序.在此C#应用程序中,我希望它也要检查它是否是"调试"版本 - 换句话说,如果它在最终用户计算机上运行,​​它将崩溃. 现在,我一直在搜索高和低的搜索,并找到了一些可能的解决方案,但是它们都掉进了. Assembly.LoadFrom(string)不适合非托管代码.我可以使用它来针对托管DLL文件,而不是C ++. 我认为我可以使用还尝试了我还发现了一些链接,这些链接应该为我提供依赖性沃克的来源.不幸的是,他们都死了.我不认为这很难做,但是无论出于何种原因,我都很难弄清楚这是如何自动化的. 一些对我有帮助的源链接,但它们都没有通过不受管理的汇编数据解决了问题. /em> 如何自动化集成测试? (堆栈溢出) 确定是否确定是否是. 如何判
0 2024-04-15
编程技术问答社区
关闭警告 CS1607
我有一个常见的装配文件,我试图关闭警告: 警告CS1607:汇编生成 - 为"文件版本"指定的版本'2.0.4.121106'不在正常'major.minor.minor.build.revision.revision'格式 我已经这样做了,但它不起作用: #pragma warning disable 1607 [assembly: AssemblyVersion("2.0.*")] [assembly: AssemblyFileVersion("2.0.4.121106")] [assembly: AssemblyInformationalVersion("2.0.0.0")] #pragma warning restore 1607 所以有什么方法可以在代码中执行此操作? 解决方案 您遇到错误的原因是因为修订号大于65534. .但是,为了使我们四处走动,我们发现我们可以将以下代码设置为out assemblyversion.cs以您的版本为例
0 2024-04-15
编程技术问答社区
在GetTypes方法中无法加载文件或汇编错误
我正在从文件夹中读取DLL和过程类型. xxx.dll xxx.interfaces.dll 当我加载xxx.dll并在该组件上调用gettypes时,它正在抛出一个例外... {System.IO.FileNotFoundException: Could not load file or assembly 'xxx.Interfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. File name: 'xxx.Interfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' === Pre-bind state information === LOG: User = xxx LOG: Disp
0 2024-04-15
编程技术问答社区
.net core 1.1: 来自外部程序集的Type.GetType返回null
我正在将控制台应用程序移植到.NET Core,该应用程序从外部库中加载类型.在完整的.NET框架中,使用Type.GetType("typename, assemblyname")时,当组件位于与可执行文件的同一文件夹中时. 在.NET核心中,无论我放置库的位置,它都会返回null. 作为解决方法,我已经安装了System.Runtime.Loader软件包并将其附加到Resolving事件,以强迫从完整路径上加载: AssemblyLoadContext.Default.Resolving += Default_Resolving; type = Type.GetType(value); 委托在哪里: private static Assembly Default_Resolving(AssemblyLoadContext context, AssemblyName assembly) { return context.LoadFromAssemb
0 2024-04-15
编程技术问答社区
二进制格式化器忽略了汇编版本
我有以下方法来生成对象的哈希.它效果很好!但是,当我更改程序集的版本时,即使对象相同,哈希也在更改. public static string GetHash(Object item) { MemoryStream memoryStream = new MemoryStream(); BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(memoryStream, item); binaryFormatter.AssemblyFormat = FormatterAssemblyStyle.Simple; HashAlgorithm hashAlgorithm = new MD5CryptoServiceProvider(); memoryStream.Seek(0, SeekOrigin.Begin); retu
0 2024-04-15
编程技术问答社区
让绑定的重定向在办公室插件中发挥作用
我在我的单词addin中使用microsoft.bcl.async,我的addin被编译为一个exe(test_addin.exe)文件,该文件从Microsoft Word中加载为一个汇编,当我直接启动可执行文件时,所有内容都可以正常工作.很好,但是当我从Word运行它时,我会遇到一个错误,说它未能加载 systems.threading.tasks indable. Could not load file or assembly System.Threading.Tasks... 看起来它与绑定的重定向相关,当我尝试从Word运行应用程序时,它希望配置文件位于文件夹中并命名为WINWORD.exe.config,这是不可能的,因为我是不可能的可能无法访问该文件夹. 我的test_addin.exe.config文件:
0 2024-04-15
编程技术问答社区
当`Assembly.GetType(name)'返回`null'时?
我有一个如下所示的代码 public static Type ToType(Type sType) { Assembly assembly = Assembly.Load(SerializableType.AssemblyName); type = assembly.GetType(sType.Name); } 更新 在UI中,如果我设置了基类无问题的值,因为它们的汇编会创建正常方式,但是如果您为用户定义的类设置值,则它们的汇编创建不同的方式,如下所示 解决方案 它返回null如果找不到类名称,很可能是因为您类型的Name属性只是返回类型名称,而不是符合限定的命名空间名称.确保您的Name属性也包括命名空间资格. 根据gassebly.getType(字符串名称)的MSDN,它返回: 一个代表指定类的对象,或者如果类别 找不到. 因此,由于您获得了null,因此找不到类型名称,很可能是原因是它拼写错误,或者您没有使用命名空
0 2024-04-15
编程技术问答社区
引用的项目依赖DLL没有被复制
我的项目解决方案目前有三个项目: myproject ,这是我的主要启动项目(使用.NET Framework 4.7)-WPF,UI Specfic, myproject.core - 类库(.NET Standard 2.0) - 保存模型和所有"幕后数据" myproject.Realational - 类库(.NET Standard 2.0) - 负责处理和保存数据库特定信息 project 1(main)设置了对project 2和3的引用. 对于项目3我已经安装了NuGet Microsoft.EntityFrameworkCore.Sqlite (2.0.3)的依赖性. 现在,当我最终想使用project 3并将其称为方法时,正在抛出以下例外: System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.EntityFrameworkCore, V
0 2024-04-15
编程技术问答社区
加载这个组件将产生一个与其他实例不同的授予集
我在运行时会遇到以下错误"加载此组件将从ASP.NET 2.0网站调用VB.NET 1.1组件时产生与其他实例不同的赠款.知道这个错误背后的原因是什么? 场景是: 有一个Web应用程序在ASP.NET 2.0中以网站构建.该网站中的网页加载了2.0 VB.NET组件,该程序集已加载1.1 VB.NET汇编. 代码在运行时失败,加载1.1 DLL的组件.请帮助. 解决方案 我安装.NET 4.5.1时遇到了此错误. 我通过在我的解决方案文件夹中删除.suo文件来修复它(您可能必须显示隐藏的文件才能查看它们). 下次我开始开始时,一切都恢复了正常. 其他解决方案 我已经搜索了几周,发现了罪魁祸首. 在我的情况下,这是该解决方案中的新代码签名证书,其中我本地证书存储中的旧代码证书. 当我安装新证书时,错误消失了.
2 2024-04-15
编程技术问答社区
集合体绑定错误。绑定结果: hr = 0x80070002. 系统无法找到指定的文件
我有一个Visual Studio 2010解决方案,其中包含一个类库(Projecta)和两个SharePoint Projects(ProjectB&Projectc).依赖顺序是Projectb参考proejcta和Projectc参考Projecta&ProjectB. 在一台特定的开发机上,我在尝试构建Projectc时会遇到以下错误: 编译失败.无法加载一种或多种请求类型.检索LoadereXceptions属性以获取更多信息. 查看融合日志时,我注意到以下错误: *汇编活页夹日志条目(14/06/2012 @ 09:38:32) * 操作失败. 绑定结果:HR = 0x80070002.系统找不到指定的文件. 汇编管理器从:c:\ windows \ microsoft.net \ framework \ v4.0.30319 \ clr.dll 在可执行文件中运行C:\ Program Files(X86)\ Microso
0 2024-04-15
编程技术问答社区
"无法加载文件或程序集'System.Core, Version=2.0.5.0,... "动态加载便携式类库时出现异常
首先,我需要强调的是,这与我试图尽可能简化这个问题.总的来说,它关于使用汇编中的桌面应用程序中加载PCL组件.loadfile(...). 假设有一个.NET 4.0控制台应用程序(称为" C").它引用.NET 4.0组件(称为" N4")和PCL组件(称为" PCL"). 其中N4看起来像这样: using System.Linq; namespace N4 { public class ClassInN4 { public static string Greet() { return new string( "hello from N4" .ToCharArray() .Select(char.ToUpper) .ToArray() );
0 2024-04-15
编程技术问答社区
通过提供类名作为字符串来获取引用程序集中的类型?
这些类似的问题: How-To:使用Silverlight 中的字符串在运行时加载类型,我有一个MVC项目,该项目从包含普通类型的字符串的数据库中获取数据.这些类型在引用的组件中,而不是MVC项目中. 因此,例如,假设我的引用汇编名称为MyFramework,而普通类型名称Car,完整的类型名称可以是MyFramework.Cars.Car或MyFramework.Vehicles.Cars.Car或其他一些变化.我所拥有的只是引用的汇编名称和普通类名称为字符串.无论全类型名称如何,我如何获得类型? 最后,我可以在引用的汇编中编写一个函数,该功能调用getType()并在MVC项目中使用它,以便我可以放弃包括汇编名称?我想删除知道组件的名称,所以我想我可以在引用的汇编中写一个util: namespace MyFramework //the referenced assembly { public static class TypeUtil { publ
0 2024-04-15
编程技术问答社区
即使条件评估为假,If 语句似乎也在评估。
昨晚的工作很晚,我们试图弄清楚为什么某些事情失败了.验证检查在不应该的情况下失败. 我们最终在此代码中添加了打印语句(从反射器拆卸以检查代码实际上是我们写的): public static string Redacted(string name, DateTime lastModified) { long ticks = lastModified.Ticks; if ((ticks != (ticks - (ticks % 10000L))) && (lastModified != DateTime.MaxValue)) { Log.Debug(string.Format("Last Modified Date = '{0}'. Ticks = '{1}'. TicksCalc = '{2}'", lastModified.ToString("dd/MM/yyyy hh:mm:ss.fff
0 2024-04-15
编程技术问答社区