- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 VisualStudio 2013 我已经成功编译了最新版本的 dnlib这是 ConfuserEx 的一部分和 de4dot项目,dnlib 项目默认以 .NET Framework 2.0 为目标,因此在其他以更高版本为目标的项目中引用它应该是兼容的,但是当我引用生成的 dnlib.dll 在以高于 3.0 的 .NET 框架为目标的新项目中,该项目无法编译。
任何编译错误信息只是一个 VisualStudio 消息框,上面写着:
There were build errors. Would you like to continue and run the last successful build?
我在一个(新的,空的)WinForms 项目中尝试了 dnlib.dll,同时使用了 dnlib.dll 的调试版和发行版,我已经尝试以固件 3.5、4.0、4.5 和 4.5.1 为目标,但该项目仅以固件 2.0 和 3.0 为目标编译成功。
另一方面,我完全能够浏览库成员并实例化其中的类等等,但无法使用引用的 dnlib.dll 编译项目。
我认为如果 dnlib 项目中的默认 FW 目标是 2.0 应该是有充分理由的,因为它涉及外部程序集等等,所以我不确定要尝试解决这个问题通过增加 dnlib 项目中的 FW 目标来解决问题,但无论如何我已经尝试将其增加到 4.0 以查看发生了什么,并且我在 mscorlib 中遇到了很多关于类型定义的编译器错误。 dll.
我错过了什么?
我如何解决这个问题,以便能够编译一个以 FW4.0 为目标的项目,并引用以 FW2.0 为目标的 dnlib.dll?
最佳答案
好吧,摆弄一下,我可以得到一些警告
但不是错误。根据 MSDN,ExtensionAttribute
随Net 3.0应运而生HandleProcessCorruptedStateExceptionsAttribute
与 NET 4.0。因此,为了使 NET 2.0 代码与 4.0 项目兼容,它提供了缺少的属性。警告只是它们被多重定义,因为它们只是属性,我认为这不重要。
有两种简单的方法可以消除警告,而不是将它们注释掉。
方法 1(我认为更好):为 Net 2.0 和 4.0 构建创建解决方案。
打开基本的 Net 2.0 解决方案。在解决方案资源管理器中选择解决方案 (dnlib)。在文件菜单中选择将dnlib.sln 另存为 并使用dnlib20.sln
作为文件名。这是您的 NET 2.0 FrameWork 解决方案。
再次另存为,这次是dblib40.sln
。稍后这将是您的 Net 4.0 Framwwork 解决方案。将控制台测试项目和 dnlib 库项目都切换到 Net 4.0 目标平台。然后,在解决方案资源管理器中,从解决方案中排除最后两个文件:HandleProcessCorruptedStateExceptionsAttribute.cs
和 ExtensionAttribute.cs
。保存它,清理并构建,你应该会很好。
您不需要这两个文件,因为 NET 已经定义了它们(这是警告);它们仅适用于 2.0 项目/解决方案。
注意:您还可以将其设置为将解决方案编译到它们自己的文件夹中,这样您就不会混淆它们。在 Build 选项卡上,下一个输出添加一个文件夹(..\Debug\bin\Net20
和 ..\Debug\bin\Net40
)。您必须更改/更新调试和发布版本。
方法二:定义一些条件编译常量。
如上所述创建 dblib20.sln
和 dblib40.sln
解决方案(除非您甚至不想使用 2.0)。一定要在4.0方案中将Framework设置为NET 4。
在 Net 2.0 dnlib project 文件中,转到 Project Properties --> Build --> General 添加条件编译符号 NET20
.现在,在 HandleProcessCorruptedStateExceptionsAttribute.cs
中将代码包装在 #if
中:
#if NET20
using System;
#pragma warning disable 1591 // XML doc warning
namespace System.Runtime.ExceptionServices {
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
sealed class HandleProcessCorruptedStateExceptionsAttribute : Attribute {
}
}
#endif
在 ExtensionAttribute.cs
中,做同样的事情。然后清理并重建,一切都应该很好。由于符号仅在 NET20 解决方案中定义,因此只有在您使用/打开 Net 2.0 解决方案时才会编译这些类。如果您下载另一个更新,除非他们提供 NET 4.0 解决方案文件,否则您将不得不重做。
据我所知,仍然没有任何内置的 FrameWork 常量。
最后,当这些警告被清除后,有5个比较警告,但从外观上看,这些警告可以忽略(代码似乎在做它想做的事)。
关于c# - 尝试将其引用到其他项目时出现 dnlib 库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24974182/
说真的,你怎么能在不发疯的情况下处理所有这些异常呢?我是不是读了太多关于异常处理的文章或什么?我尝试重构了几次,但每次似乎都以更糟糕的结果告终。也许我应该承认确实会发生异常(exception)情况,
背景 两者 try/rescue和 try/catch是 Elixir 中的错误处理技术。根据 corresponding chapter在介绍指南中。 Errors can be rescued u
每当我尝试在 Raspberry PI 上运行此 python 脚本时,我都会遇到问题: import socket import sys # Create a TCP/IP socket sock
我想知道一些关于 PHP 的 try , catch声明。 让我们考虑以下示例。 abstract class ExceptionA extends Exception {} class Except
我的 laravel v5.4 项目中有两个模型,user 和 admin。 在 config/auth.php 中,我向守卫和提供者添加了管理员,如下所示: 'guards' => [ 'w
try: r = requests.get(url, params={'s': thing}) except requests.ConnectionError, e: print e
我有以下代码。 但是,它并不能捕获所有错误,而我仍然会收到“throw er;//未处理的'错误'事件”。 为什么是这样? app.post('/api/properties/zip/:zip/bed
问题与细节 我正在使用自定义错误处理,遇到的错误之一是“路径中的非法字符”。我有一个自定义函数,旨在通过路径字符串查找此类非法字符,并在找到它们时引发自定义错误。但是我发现,取决于非法字符,Test-
This question already has answers here: How do I catch a numpy warning like it's an exception (not j
我正在使用其他人的代码,但我不熟悉try/catch,因此我举了一个类似的小例子。在第11行上,如果我写了error(''),似乎没有发现错误并增加了索引j。但是,编写error(' ')或error
我在我的一个程序中遇到了这个问题,在这种情况下,尝试/异常(exception)的错误使程序变得更好,以防用户意外输入了他们不应该输入的内容。它仍然给我错误,我为为什么感到困惑。如果对我的问题确实很重
我在尝试TRY ... CATCH块时遇到问题。有人可以解释为什么以下代码无法执行我的sp吗? DECLARE @Result int SET @Result = 0 BEGIN TRY SE
我有一个相当大的 powershell 脚本,其中包含许多(20 多个)执行各种操作的函数。 现在所有代码实际上都没有任何错误处理或重试功能。如果某个特定的任务/功能失败,它就会失败并继续。 我想改进
为什么我尝试时需要导入 inputmismatchException catch(InputMismatchException e){ System.out.println("
我对此感到困惑 - 我为辅助方法编写了一个 try/catch 。它的目的是捕获任何无效输入(任何不是“男性”或“女性”的内容(没有特定情况)。如果输入无效,它将通知用户,然后让他们重试。如果有效,则
我有时会发现自己处于如下场景。尽可能简单地陈述问题 “有时我会创建一段代码,Java 让我将其包含在 try/catch 语句中。我没有使用 catch,所以我将其留空。为什么这是错误的?” boo
我有点困惑为什么当我不使用 Try block 时会出现 Try block 错误。 我在代码块底部附近收到错误通知。如果我不使用 try/catch,有人可以向我解释为什么会发生这种情况吗? 它是否
我已经盯着我的电脑两个小时了,我不知道我做错了什么。谁能帮助我看到光明? package blackjack; import java.util.Random; import java.util.Sc
我想将方法保存在 Enum 中,但 Class.getDeclaredMethod 抛出 NoSuchMethodException,那么我该如何处理呢?我的代码: public enum Car
这个问题已经有答案了: Executing multi-line statements in the one-line command-line (18 个回答) 已关闭 3 年前。 如何使用try.
我是一名优秀的程序员,十分优秀!