问题标签 [dll-dependency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NET DLL 问题
我创建了一个 C# 文件并希望将其编译成 DLL 以供将来使用。但是,此 .cs 文件依赖于另一个 DLL。在我的 .cs 文件中的代码中,我正在执行以下操作:
当我尝试将其编译为 DLL 时,编译器告诉我它找不到另一个 lib.dll(缺少指令或程序集引用)。
正确的方法是什么?
我正在使用 .NET 2.0。
dll - 如何查找应用程序的所有依赖项?
在 Portable-Exe 中,有可能找到导入的部分,以及所有导入的 dll 名称(使用导入描述符)。在这里,一个应用程序 Exe 有许多导入的 dll(kernel32、advapi、user、comctl32 ....etc ),现在我想找到该应用程序exe(导入的dll)中的所有依赖项..给我使用递归函数调用的逻辑..
在这里,例如 notepad.exe,假设有两个 dll(advapi32,user32),我可以获取这些 dll 的详细信息,我想知道 advapi 和 user32 的导入 dll ....顺便说一下所有依赖项...你能给仅逻辑,对我很有帮助....谢谢
.net - 这是管理公共库的好方法吗?
我们需要找到一种合理的方法来管理我们内部的 .NET 库,这些库可能会被多个项目重用。谷歌搜索和思考这个问题几个小时让我得出以下我想继续下去的结论:
对于我们拥有的每个库的每个版本,我们的构建服务器 (Jenkins) 上都会有一个单独的工作。成功构建库后,构建输出(通常是 .dll 文件)将被复制到公共网络存储库。此存储库的结构可能与此类似:
每个想要使用库的项目都会附带一个简单的 .bat 文件,该文件会将必要的库从该存储库复制到专门用于存储项目依赖项的文件夹中。然后,将从该文件夹中引用依赖项。示例项目可能如下所示:
getDependencies.bat
将始终删除dependencies
文件夹的内容并从存储库中获取库的新副本。它将在每次在 Jenkins 上构建项目之前执行。dependencies
文件夹永远不会被提交给 SVN。
我也考虑过一些替代方案:
- 使用自定义 NuGet 源而不是简单的存储库。我放弃了这个,因为我发现,使用我们公司仍在使用的 Visual Studio 2008 中的 NuGet非常痛苦。否则,这将是我的首选解决方案。
- 使用 svn:externals 解决依赖关系。我不喜欢这个有两个原因:
- svn:externals 强迫我处理源代码,而不是只处理二进制文件(如上面概述的解决方案)。我不想将使用该库及其源代码的每个项目都搞得一团糟。
- 不知何故,使用 SVN 管理依赖项(至少在我看来,应该用于管理版本控制)感觉不对。我还认为 svn:externals 使跟踪特定项目的依赖关系变得困难,并使项目过于依赖 SVN。
如果有人能指出我首选解决方案的任何潜在问题,或者您认为它有任何问题,我将不胜感激。另外,如果我试图重新发明轮子并且已经有一些标准化的解决方案来解决这个问题(除了我提到的替代方案),请不要犹豫,启发我:)
非常感谢!
.net - 在 bindingRedirect 中要考虑的 Spring.net 依赖项
我在 Web API 项目中使用 spring.net 2.0.0 版,我刚刚添加了对依赖于 spring.net 1.3.2 版的 dll 的引用。
我在我的 web.config 中执行以下操作:
但我不断收到以下错误消息:
无法加载文件或程序集“Spring.Core,Version=1.3.2.40943,Culture=neutral,PublicKeyToken=65e474d141e25e07”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。
我是否缺少另一个依赖项,或者我误解了 bindingRedirect 配置。
编辑:我发现 Spring.Net 2.0 dll 的 publickeytoken 为空,而 1.3.2 dll 的 publickeytoken 为 65e474d141e25e07。我认为这是问题所在,有没有办法在这种情况下使用 bindingRedirect ?
debugging - 如何使用两个 Visual Studio 实例调试依赖 dll 的解决方案?
我有我的 Sharepoint Timer 作业解决方案,它具有另一个解决方案的依赖 .dll。要调试第一个,我只需要附加到 OWSTIMER.EXE 进程。但是当第一个调用第二个方法时,我需要调试第二个解决方案。我一直在尝试将第二个 SLN 附加到第一个进程,但它没有成功!我正在考虑将两个 SLN 都附加到 OWSTIMER.EXE 但这是不可能的。我尝试将第二个附加到 OWSTIMER.EXE(OWSTIMER.EXE 使用的是第一个 SNL,但依赖的 dll 与第二个相同)所以理论上这应该可以工作!:/我承认这可能不是很清楚。有谁知道该怎么做?而且(最重要的事情)谁能解释我的推理有什么问题???
c# - Visual Studio 未构建项目的依赖项
我有一个项目,它由窗口服务项目和每个项目的逻辑项目组成。
假设我的 Windows 服务项目被调用Project1
,它有一个名为Project1BL
. 如果我构建Project1
,它会构建Project1BL
并且Project1
这很好。
我的问题是这个解决方案中的另一个项目(Project2
)如果我构建它并且Project2BL
没有构建它会引发错误
未找到元数据文件 Project2BL/bin/debug/Project2BL.dll
我不想在Project2BL
每次构建解决方案时都明确构建。
任何人都知道为什么一个项目会给我这个问题而另一个项目没有?
c - 加载 DLL 库错误 126 - 尝试创建 JVM
我正在尝试制作一个 .exe 来运行我的 Java 应用程序。我有以下代码:
迷宫.c
然后编译为 OpenLabyrinth.dll
我有一个程序试图运行 dll
开始.c
后来编译成Labyrinth.exe
运行我的应用程序时,我得到 LoadLibrary 错误代码 126。我尝试用谷歌搜索错误 126,发现我的 .dll 需要依赖项。
检查它Process Monitor
我发现我的程序执行的每个操作都是成功的,但它返回代码 1。
但是,当我使用它进行检查时,Dependency Walker
我显示了很多丢失的文件。他们都是API-MS-WIN-CORE-something
或者EXT-MS-WIN-something
。
什么应该导致错误?
c# - Visual Studio 自动恢复 dll 包
在我工作的公司中,在每个解决方案中,我们都有一个文件夹packages,其中包含所有 dll 依赖项。此文件夹与解决方案的其余部分不在存储库中。
每次我构建一个项目时,文件夹包中的所有文件都会恢复,并且任何丢失的 dll 都会再次出现。这发生在构建开始时,无论构建成功还是失败。即使项目没有 dll 依赖项,包中任何丢失的 dll也会被恢复。
我怀疑这是 msbuild 中的一个设置,但我找不到它。有谁知道它可能在哪里,或者是否有 msbuild *.targets 文件的地方?
谢谢你的帮助
c# - Azure 云服务:System.Net.Http.Formatting.dll 请求旧的 Newtonsoft.Json.dll -> 角色初始化失败
我有大约 80 个项目的相当大的解决方案,使用 WebAPI (v1) 作为 Web 角色在 Azure 云服务服务器上运行。我通过实施 custom 创建了有关内容协商的新增强功能JsonReader/Writer
。当我尝试通过实现MediaTypeFormatter
基于它的自定义来使用BaseJsonMediaTypeFormatter
它失败时 - 准确地说,它在发布到 Azure 时失败。本地模拟它完美运行。一旦发布,它就会失败:
(从 EventViewer->Application and Services log->Windows Azure 捕获的日志)。
直到我尝试使用我的自定义MediaTypeFormatter
一切正常。我已经在互联网和 SO 上搜索了一些解决方案,尽管问题并不像我认为的那样罕见,但没有一个解决方案对我有帮助。我尝试了什么:
- 在所有引用项目中合并所有版本的
Newtonsoft.Json
nuget - 合并所有版本的
Microsoft.AspNet.WebApi.Client
nuget - 删除了对这两个库的所有引用,并通过引用 nuget 替换了这些对 dll 的引用
- 将两个 Nuget 包升级到最新版本(Json 12.0.3 和 Formatting 5.2.7)(我什至尝试在
Update-Package
命令中使用 -reinstall 参数) - 手动检查所有
csproj
引用旧Newtonsoft.Json
版本。 - 清理解决方案、bin、obj 文件夹、所有缓存文件
- 我的
web.config
文件包含(并且一直包含)正确bindingRedirect
的Newtonsoft.Json
- (可能还有一些其他的东西,我已经忘记了)
没有一个解决方案有效,我仍然收到这个奇怪的消息。我的问题是:
System.Net.Http.Formatting
当我明确说它应该重定向到第 12 个版本时,该库怎么可能需要某个特定版本的 Newtonsoft.Json?是不是因为它发生在 Webrole 启动期间(可能是因为它还不尊重 web.config?)- 为什么它在我的电脑上可以运行,但在 Azure 云服务上没有部署?它是否以某种方式在我的本地计算机上找到并使用旧版本的 Newtonsoft.Json lib(以及在哪里,所以我可以尝试删除它)?
- 有没有更好的方法来调试这个问题?也许记录加载引用的 DLL 的顺序以更接近错误?或者在我的本地计算机上复制错误?目前部署应用程序,登录远程桌面并检查云服务上的EventViewer非常耗时......
任何发现问题的提示将不胜感激。
c# - dll 依赖问题 - 第 3 方包(Nuget)覆盖输出文件夹 System.Runtime.CompilerServices.Unsafe dll 中的其他包
目标:在不保存或将工件添加到存储库的情况下控制输出 dll。
主要问题是我的解决方案中有两个第 3 方包(.net 框架 4.6.1):rabbitMQClient V6.0.0 使用 - system.memory (>= 4.5.4) -> System.Runtime.CompilerServices.Unsafe ( >= 4.5.3)
使用 System.Runtime.CompilerServices.Unsafe (>= 5.0.0) 的 MongoBson v2.12.1(例如)
每个包都提供以下具有不同版本的 System.Runtime.CompilerServices.Unsafe.dll,并且由于它们是不同的项目,因此它们中的每一个都覆盖输出目录中的另一个。
我尝试了什么:如果我尝试降级“CompilerServices.Unsafe”,则 mongoDb 连接因异常而失败 - 'MongoDB.Driver.Core.Misc.DnsClientWrapper 的类型初始化程序...”
如果我升级,那么兔子将无法连接 - 内部异常:无法加载文件或程序集。
我尝试使用重定向,但似乎它不起作用(如果是新版本的 dll,rabbitMq 异常)
解决方案起作用的唯一可能性是,如果我在所有项目中将本地副本设置为 false,但使用旧版本的项目除外,但由于在 NuGet 更新时它将设置为 true,我需要更稳定的解决方案。