试图理解跨越汇编的方法签名变化
我们遇到了促销问题的奇怪问题,我希望我能够用代码来解释它.我想了解为什么它以其方式行为. 组装1 public static class Foo { public static string DoStuff() { // Do something return "some string"; } } 组装2: public class Bar { public void SomeMethod() { // I realize the below is not what should be done for catching exceptions, as the exception is never thrown due to the return, and seems unnecessary either way... // this is inherited
18 2024-04-26
编程技术问答社区
将C# DLL加载到C++/CLI-dependencies目录下
我编写了使用我的其他C#DLL库的DLL C ++/CLI库.当我将C#dll与称为它的应用程序相同的文件夹中时,C ++/CLI库可以正常工作.该库最终将加载到许多应用程序中,并且不得将C#DLL复制到应用程序中.它必须与C ++/CLI库在同一文件夹中,但是在这种情况下,我有System.io.filenotfoundException. 我的建议是手动加载C#库或更改F.EX的路径. Firefox正在寻找依赖项,但是我尝试使用LoadLibrary()和汇编:: LoadFrom()方法来强制从右目录进行加载.当然,我在系统路径中添加了带有DLL的目录路径. 我在VS2010上工作. 解决方案 您不会更改应用程序将在其中寻找DLL的默认目录. 在设计时,将您的DLL放在一个众所周知的位置,即您将部署到的位置.添加对它的引用,请确保将其设置为永远不会复制,否则最终将进入bin文件夹.您必须这样做,否则不会编译. 部署时,您将需要一个软件包来部署通用DLL,一个用
14 2024-04-26
编程技术问答社区
序列化对象来自为" system.text.json"不同主要版本编写的项目序列化对象
我的项目,称其为Z,取决于其他两个项目,X和Y,并使用Newtonsoft.Json进行序列化,同时依靠System.Text.Json 7.0.0来提供自己类型的注释. 项目X取决于System.Text.Json 7.0.0.项目Y取决于System.Text.Json 6.0.1. 使用Newtonsoft.Json.JsonConvert从Y序列化对象时,我会得到以下例外: System.IO.FileLoadException: Could not load file or assembly 'System.Text.Json, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly re
10 2024-04-26
编程技术问答社区
当间接引用NuGet依赖性时,本地依赖性不会被复制。
我有一个内部Nuget软件包,该软件包取决于另一个具有本机依赖性的Nuget软件包.在.NET SDK控制台应用程序中,我正在引用内部Nuget软件包,并间接引用具有本机依赖关系的其他Nuget软件包. 当间接引用具有本机依赖性的Nuget软件包时,本机依赖项未正确复制到bin目录. 如果将带有本机依赖关系的Nuget软件包直接安装为直接依赖性,则将本机依赖关系正确复制. 将永远是这种情况,我们只需要使用我们的内部Nuget软件包添加带有本机依赖项的Nuget软件包作为对任何项目的直接依赖性?还是可以将某些内容添加到我们的内部Nuget软件包中,或者可以添加到其他Nuget软件包中以使本机依赖关系间接地复制? 使用CSPROJ文件中的信息创建Nuget软件包. 解决方案 我能够使用此处描述的软件包参考修饰符控制依赖资产 PrivateAssets的默认值是防止ContentFiles,分析仪和构建文件传播到引用项目.本机文件位于Nuget软件包的构建文件
10 2024-04-25
编程技术问答社区
在类库文件中自定义依赖注入
我正在从事一个项目(ASP.NET MVC-5带JQuery),其中整个验证正在前端进行,我们正在使用$ .AJAX调用执行API,因为现在没有API级别或API级别上的验证即使在SQL Server的存储过程中,用户也可以轻松地访问具有错误值的API,因此我们决定在应用程序中添加逻辑层. 因此,在我们的结构看起来像下面 jQuery -> Api layer -> Db layer 现在,我想在Api layer和Db layer之间添加一个层,该层将称为Logic layer. 新结构看起来像下面的 jQuery -> Api layer -> Logic layer -> Db layer 注意: 所有层都是同一解决方案中的不同项目 逻辑层和数据库层是类库文件 DB层分为2个子类别(接口和类) 因此,我们有4个班级库1 API和1个前端.接口是在类文件中继承的.班级库就像以下 db.interface(类库项目) db.c
18 2024-04-25
编程技术问答社区
C#依赖注入的副作用(两步初始化的反模式)?
我正在研究一个项目,在该项目中,我的构造函数仅包含 - 仅 - 行为依赖性.即我从不通过值/状态. 示例: class ProductProcessor : IProductProcessor { public double SomeMethod(){ ... } } class PackageProcessor { private readonly IProductProcessor _productProcessor; private double _taxRate; public PackageProcessor(IProductProcessor productProcessor) { _productProcessor = productProcessor; } public Initialize(double taxRate) { _taxRate = taxRate;
4 2024-04-25
编程技术问答社区
常见的做法是在程序中加载依赖性(不同版本的dll)。
假设有一个使用2个第三方DLL的代码.一个是NLog.Extensions.Logging版本1.6.1用于记录另一个的是CryptoProvider.dll用.NET标准2.0编写的CryptoProvider.dll. NLog.Extensions.Logging内部使用Microsoft.Extensions.Logging版本2.1.0而CryptoProvider.dll内部使用Microsoft.Extensions.Logging版本2.0.0.因此,现在有一个关于版本不匹配的问题.因此,我应该如何设计加密驾驶DLL.这样解决问题. 解决方案 有可能使用app.config文件汇编\ bindingredirect 如下
16 2024-04-24
编程技术问答社区
澄清".dll.refresh "文件、源码控制和构建asp.net网站项目的问题
我正在ASP.NET网站项目(与Web应用程序项目相反, ,这意味着它没有.csproj文件). 解决方案是这样结构化的: -Solution |-dlls | |-AjaxControlToolkit.dll |-packages | |-Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1 | | |-(...) | |-RestSharp.106.6.7 | |-(...) |-WebSiteProject | |-Bin | | |-(.refresh files listed below) | |-packages.config | |-(other website files) 从源控件进行新的结帐后,在Bin文件夹中,我有这些: ajaxcontroltoolkit.dl
4 2024-04-24
编程技术问答社区
带有XBAP的x86目标平台
我有一个XAML浏览器托管应用程序(XBAP)项目,该应用程序依赖于仅X86的另一个项目.如果我将目标平台作为"任何CPU",各种地狱在运行时(对于抓住DLL)就会松动.但是,如果我将XBAP项目切换到Target X86,则会收到以下编译时间错误: 错误7-无法构建 平台特定的XAML浏览器 应用.如果HostinBrowser属性 设置为" true",要么不设置 PlatformTarget属性或设置 到'anycpu'. 是否有工作?还是我必须找出一些可怕的多进程 + IPC解决方案*? *仅仅想到我充满了恐怖 解决方案 如果您的依赖.dll没有与Win32本机DLL的任何链接,则可以在反射器中解散它并将其重新编译为任何CPU,或者在可能的情况下获取任何CPU版本.如果它具有Win32链接,那么我认为您必须按照您的建议将其分为多个Proc.
2 2024-04-24
编程技术问答社区
VS C#中的依赖性地狱,无法找到依赖性
我创建了一个图表C#库(让我们称其为chartlibrary)本身对多个第三方DLL文件具有依赖性. 在另一个可执行项目中(我们称其为chartuser),我引用chartlibrary项目(两个项目都位于Visual Studio中的同一解决方案中). 汇编后,我可以看到chartuser的bin/debug文件夹中还包含所有第三方DLL文件.但是,我得到了一个运行时错误,这基本上指出了以下事实:chartlibrary中的某些引用无法解决.然后,我试图通过 获得更好的想法 AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; 和 private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { var assemblyFi
10 2024-04-23
编程技术问答社区
封装器是测试静态依赖关系的唯一方法吗?
我需要为使用DllImport使用静态依赖性的类编写测试,并被迫进入static public extern ....除了围绕静态外部依赖性编写包装器之外,我是否可以进行任何重构来制作此测试? 解决方案 另外,您可以使用商业模拟框架(例如Typemock)来启用模拟静态方法.但是在您的情况下,我倾向于同意贾斯汀·皮霍尼(Justin Pihony),包装还可以.
10 2024-04-23
编程技术问答社区
用反思寻找财产使用量
我有一个生成的文件,其中约有10,000个公共静态属性和方法.我怀疑它们的非平凡数量是完全未使用的,但是可以肯定的是大约有50个组件和数百万行代码. 我想做的是运行某种实用程序,可以查看我们拥有的所有编译的组件,并确切地告诉我该课程的哪个成员被调用,并给我每个人的数量. 反射是可能的,还是我需要恢复为实际的代码分析工具?是否有任何可以分析组件以在另一个组件中找到其依赖项的库? 解决方案 RESHARAPER"查找用法高级"功能可以选择在库中以及当前解决方案中查找参考.我没有使用此特定功能,因此我不确定它的工作原理(解决方案中的查找用法都非常有效),但是您可以获得RESARARPER的试用版并尝试.我的猜测是,您需要从一个具有带有您感兴趣的各种库的项目的解决方案中运行它. 其他解决方案 我认为这不能通过"常规"反射来完成,因为用法无法通过仅查看类的 struction 来检测.我想您需要拆卸IL并进行分析,寻找call,calli和callvirt指令(属性查找
4 2024-04-23
编程技术问答社区
NuGet将项目的依赖性打包成nuget的依赖性
我有3个类库项目(所有.NET标准2.0)都在同一解决方案中.我想将它们包装到一个nuget中,并在其他存储库中使用代码. 但是,当我将它们包装到nuget软件包中时,两个将它们作为nuget依赖性添加到第三个依赖性,而不是直接称为dll. 这是我设置的示例. 3个项目 - a .csproj, b .csproj, c .csproj(所有类库,所有.NET标准2.0) a 被设置为启动项目,参考 b 和 c b 有参考 c c 没有引用其他两个(仅引用2第三方nugets) 当我将解决方案包装到Nuget软件包中时,NUSPEC文件具有一个组,该组在我的项目( recript )和2个项目依赖项 b中具有所有Nuget参考和 c ,版本1.0.0(不正确) 我不确定是什么原因导致Nuget这样的行为(我认为是设计),但我无法缠绕我的头来解决这个问题. 我想要的是项目 b 和 c 将被包装为dlls以项目
10 2024-04-21
编程技术问答社区
发现接口的依赖性
我接管了一个非常大的(> 2m sloc)软件项目的维护,全部用C#编写.文档很少.我现在想更改一个具有公共接口的模块(约400个),但是我不知道解决方案中所有其他模块(总数约为50个)可能使用此公共接口. 如何为这种情况创建接口依赖性用法树?代码库太大,无法简单地浏览项目资源管理器并读取源代码.您使用了哪些工具或方法来创建此类依赖关系分析树? 我不想购买任何工具.视觉工作室工具(例如课堂视图)似乎无法很好地处理此大小的项目.我已经考虑过写自己的sed/awk/perl-ish脚本,该脚本只需步行源代码并使用模式匹配来构建我自己的依赖性/接口useage数据库,但是如果有的话,我不想做些困难的方法一种简单的方法. 谢谢! 解决方案 您可能应该购买 ndepperiand .. 如果有另一个免费的工具可以提供类似的价值,我建议它.但是,我真的相信Ndepend是您最好的选择.有一个大小的代码库,一个400美元的工具就不会花很长时间. 其他解决方案 我
4 2024-04-21
编程技术问答社区
为代表Now的DateTime做一个专门的包装器是否是一个好主意?
我最近注意到,使用代表"现在"作为方法的输入参数,用于模拟和测试目的,这真的很不错.我不是每种调用DateTime.UtcNow自己的方法,而是在上层方法中进行一次将其转发. 因此,许多需要"现在"的方法,具有输入参数DateTime now. (我正在使用MVC,然后尝试检测一个称为 Now> Now 和modelbind dateTime.utcnow的参数) 所以: public bool IsStarted { get { return StartTime >= DateTime.UtcNow; } } 我通常有: public bool IsStarted(DateTime now) { return StartTime >= now; } 因此,我的约定目前是,如果一种方法具有称为now的参数,则必须以当前时间为单位.当然,这取决于惯例,其他人可以轻松地将其他一些日期时间作为参数扔进其中. 为了使其更加固体和静态类型
2 2024-04-20
编程技术问答社区
组织依赖性项目的最佳方式?
我有一组依赖其他项目的项目(您可以说实用程序),问题是每次我更改这些公用事业的代码时,我的同事需要采用最新代码并在其机器上构建其机器使用最新的组件. 有一个很好的标准解决方案吗?或简单地将DLL集中在共享文件夹上? P.S: 我们正在使用MS Source Safe 2005,我不希望我的同事每次使用源代码并在其机器上构建,因为他们只需要二进制文件而不是代码. 解决方案 如果将subvernion用作源控制系统,则可以使用 SVN外部这样做. 这样,当他们进行文件夹的根更新时,他们将自动拉出您的实用程序的新版本.您还可以以读取方式为他们提供源控件,以便他们可以查看实用程序代码,但他们无权提交更改. 我们在工作中使用它,并且可以很好地工作.但是请注意,有时您不想每次进行更新时都更新公用事业,因为您可能会使用新版本破坏某些内容.这是贵公司必须有一种处理方法.我们有针对公用事业的市长版本的SVN分支(或标签),因此,如果我们更改了一些市长,我们会制作新版本,然后人们将
8 2024-04-20
编程技术问答社区
事件真的能使代码解耦吗?
所以我试图使用事件将我的代码解次,这是我的问题: class WorldHandler { public void Notify(object sender, EventArgs e) { if (e is CameraMovedEventArgs) { // handle event } if (e is MapLoaded) { // handle event } } } worldHandler 班级聆听我应用程序的不同子系统.这是否意味着 WorldHandler 仍然与其他子系统相结合?直接访问此类中的这些子系统是不是一样吗? 如果很难理解我要问什么,我会在我的帖子中添加其他信息. 我确实对这个问题进行了研究,但我仍然觉得这很困惑,因为不同的人对如何将代码与事件解除截然不同. 是的>
6 2024-04-20
编程技术问答社区
如何在Visual Studio 2010中复制本地库到单元测试暂存目录中
我的项目对某些本地库(DLL)具有依赖性,我通常会复制通过msbuild目标进入输出目录.运行应用程序时没有问题,但是我正在Visual Studio中编写一些单元测试,每次运行单元测试时,汇编和可执行文件都会从输出目录复制到登台文件夹:C:\path\to\MyProject\TestResults\myWorkStationName 2012-03-20 13_53_56\Out 不幸的是,本机DLL未复制到登台目录中,并且在每个测试运行中都会生成登台目录.是否有MSBUILD目标可以使我可以将内容复制到登台目录中? P.S.我不确定"登台目录"是否是正确的术语,所以请原谅我的无知:). 解决方案 解决方案宽部署 从VS菜单:> Edit Test Settings>> > Deployment>检查Enable deployment并添加目录或文件. 注意此功能中的一个警告:启用现有测试的部署在视觉工作室重新启动之前无法使用. 单方法部署
2 2024-04-20
编程技术问答社区
ISEXP:警告:-6248。无法找到依赖文件libc.dll或其依赖的组件之一
这个问题有很多变化,但是我的问题是libc.dll的特定变化.我不关心解决依赖性.我想解决以避免警告的工作. 我的表格申请中有30个项目.当我使用InstallShieldle发布设置时,我会得到ISEXP : warning : -6248: Could not find dependent file libc.dll, or one of its dependencies of component Sample.CommonModules.ChangeUnit_.Primary_output 警告每个主要输出. 由于此警告,发布需要更长的时间并杀死我的时间.有什么办法可以绕过安装上的警告? 我只想摆脱警告.我不介意创建一个模拟libc.dll文件,然后将其放置一些让安装界面的位置假设它具有该文件. 解决方案 选择文件视图 - >右键单击项目主输出 - >在build -build -> unnakeck libc.dll中选择依赖项. 其他解决方
12 2024-04-19
编程技术问答社区
如何在独立客户项目的输出中包括必要的文件?
我的解决方案包括: Client - 启动项目,UI层.取决于:App App - 库,应用程序层,汇编程序.取决于:Lib1,... Lib1 - 库,业务逻辑层.需要一个特定的文件才能正常工作:ThirdParty.dll 我已经在Lib1项目(Add>>>>>>> Add)中添加了ThirdParty.dll),并设置了dll文件的属性Copy to Output Directory属性.现在,将dll文件复制到Lib1输出和App输出,但在我需要它的位置Client输出. 在每个解决方案构建上将ThirdParty.dll复制到Client的输出的正确(简单?显而易见?)是什么? upd ThirdParty.dll不是参考.实际上,这是另一个参考依赖性.我的问题应用于需要在运行应用程序文件夹中的任何文件. 录制的视频确保我做对了: http://youtu.be/qws2toic5yq /p> 解决方案 将现有项目添加为链接:
4 2024-04-19
编程技术问答社区