小编use*_*413的帖子

使用signtool.exe自动执行代码签名,但不存储证书或密码

我在Visual Studio 2013中有一个C#/ .NET 4.5 x64项目.不止一个开发人员在这个项目上工作,因此代码在Git中管理.我登录编译.dllS和.exesigntool.exe.我的公司购买了代码签名证书,如果我从命令行手动签名,如下所示:

signtool.exe sign /f cert.p12 /p "password" "compiled.dll"
Run Code Online (Sandbox Code Playgroud)

...然后看起来一切都很棒:我得到了一条成功消息,Windows资源管理器中已编译DLL的属性显示为正确签名.所以,我对实际的签名过程没有任何问题.

但是,证书及其密码不得存在于Git中.它们将在项目的所有开发人员之外提供.我可以假设每个开发人员在构建项目时都会将证书存储在他计算机上的预定义位置,并且他将知道密码.

所以,这是我的问题:如何配置Visual Studio 2013以自动签署其编译输出而不保留Git中的证书或密码?我希望它一样简单,一旦开发人员在预定义路径(或导入,或其他)中拥有证书,并假设开发人员知道证书的密码,在Visual Studio中单击"构建" 2013只是建立和签署它,没有问题.

如果签名过程可以是非交互式的(没有密码提示),那就是奖金.最终,这将是可以签署其输出的持续集成(CI)服务器的一部分,并且因为它是自动的,所以没有人会输入密码.但是,我现在会采取任何解决方案.

我的证书是PKCS#12格式,并受密码保护.Windows声称它没有标记为导出.

c# code-signing signtool visual-studio-2013

10
推荐指数
3
解决办法
9675
查看次数

IEnumerable <T>是否隐含了订单相关性,还是应该是明确的?

对我来说,IEnumerable<T>在C#(嗯,.NET)中表示可以迭代的任意数据集.它可以由任何东西支持,例如SELECT查询结果,数组内容,用户在控制台中键入的字符或Pi的数字.索引不能引用数据,它不一定是有限的或无限的,也不能被修改.它甚至可以是稍后同样调用的不同数据集,就像IEnumerable<double>随机数一样.这只是一个像foreach循环一样产生给消费者的数据.

现在考虑一个处理数据集的其他概念:SQL.在SQL中,除非明确指定,否则行的顺序不保证且不相关.例如,如果你这样做SELECT * FROM stack_overflow_posts LIMIT 1,数据库没有暗示你得到的行实际上是插入的第一行,也不是最旧的行.例如,您需要明确地对结果进行排序ORDER BY posted_date_time.

这个相同的概念是否适用于.NET中的枚举IEnumerable<T>是否使用了IEnumerable<T>一个含义,结果将始终按特定顺序产生?在我之前给出的例子中,我会说是的,订单会被暗示,因为如果它们以不同的顺序列举,结果将毫无意义; 如果您在控制台中以不同于实际击键的顺序获得用户键入的字符,那么阅读它们的重点是什么?显然,LINQ必须OrderBy()按顺序排序结果,但这是显式排序,而非隐含.

实现接口的类实际上有希望遵循特定模式,而不仅仅是实现接口定义的方法.是否IEnumerable<T>暗示其数据将以相关的顺序产生,或者如果他们希望这样做,是否由明确订购的消费者决定?如果我有一个方法以一个未定义的顺序产生项目 - 或者更确切地说,一个与消费者无关并且随时可能发生变化的订单 - 我应该使用除了以外的其他东西IEnumerable<T>吗?

.net c# linq ienumerable

7
推荐指数
2
解决办法
241
查看次数

注释Java类是安全的参考比较

我有一个多圈的类,所以我知道给定一个特定的键,永远不会有两个相同类的实例存在.这意味着,而不是:

if (someObject.equals(anotherObject))
Run Code Online (Sandbox Code Playgroud)

......我这样做是安全的:

if (someObject == anotherObject)
Run Code Online (Sandbox Code Playgroud)

这个类也是final,所以我知道任何与多态相关的东西都可能导致比较问题.

IDEA尽职尽责地告诉我,直接比较两个实例和我应该使用的风险是有风险的.equals(),但我知道它不是在这种情况下.是否有一些注释我可以应用于我的类来指示IDEA,以及可能的其他编辑,更重要的是其他用户,我的班级实例上的相等性的直接参考比较是安全的吗?

我知道我可以告诉IDEA抑制警告,但我必须为这两种类型或全局之间的每一次比较做到这一点,这两者都不是一个好主意.另外,更重要的是,我让我班级的用户知道它安全,更快,甚至更喜欢(说服我).equals().

java equality equals intellij-idea multiton

7
推荐指数
1
解决办法
72
查看次数

无法使用 Inno Setup 签署(卸载)安装程序

我安装了 Inno Setup 和 Inno Script Studio,以及 Visual Studio 2013。我有一个数字证书,用密码保护,名为certificate.p12. 我还安装了 Windows 8.1 驱动程序 SDK(虽然我运行的是 Windows 7 Professional x64)。我在安装程序中包含的编译输出已经签名。

我使用名为的签名工具my_signtool和以下命令配置了 Inno Script Studio :

"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe" sign /f "z:\full\path\to\certificate.p12" /p "password" $f
Run Code Online (Sandbox Code Playgroud)

...在我的.iss文件中,我有:

SignTool=my_signtool
Run Code Online (Sandbox Code Playgroud)

在我的计算机上使用此设置,它可以完美运行。我编译项目,Inno Setup 会自动对安装程序及其卸载程序进行签名。

但是,我有一个同事应该是完全相同的设置。他拥有 Visual Studio 2013、Inno Setup 和 Inno Script Studio、证书副本及其密码。当他尝试编译它时, Inno Setup 失败,说试图针对uninst.e32.tmp返回运行 signtool 0x1。当他运行它尝试在命令提示符下手动运行的确切命令时,它失败了,指出uninst.e32.tmp不可用,但这似乎很正常,因为我怀疑 Inno Setup 只是在错误发生后自行清理(或者是吗?)。

我试过用$q符号工具的定义替换引号无济于事。事实上,除了通向signtool.exe自身的路径之外,所涉及的路径都没有任何空间。

我们的两个输出最初都是这样的。紧接着就是他们分歧的地方:我的继续运行,他抱怨签名工具失败了0x1

Starting compile.  [Monday, January 12 …
Run Code Online (Sandbox Code Playgroud)

inno-setup digital-signature visual-studio-2013

5
推荐指数
1
解决办法
1833
查看次数

在Beaglebone Black上读取CPU温度

我有一个运行Ubuntu 14.04的Beaglebone Black。我使用了将预构建的映像刷新到eMMC指南来对其进行了刷新

从我所看到的指南中,我应该能够阅读/sys/class/hwmon/hwmon0/device/temp1_input以获取CPU温度。但是,我的系统上没有这样的路径。我猜想Beaglebone Black的AM3358 ARM CPU的内核模块提供了此功能,并且我的映像缺少这样的模块,但是我不知道从哪里开始获得这样的模块。其实/sys/class/hwmon是一个空目录。

这些是我的模块具有:

$ lsmod | sort
6lowpan_iphc           10154  1 bluetooth
bluetooth             316797  10 bnep,rfcomm
bnep                   11946  2
can_dev                 7430  1 c_can
c_can                   9400  1 c_can_platform
c_can_platform          5927  0
g_multi                 3238  0
iptable_filter          1149  1
ip_tables              11857  1 iptable_filter
libcomposite           38715  5 usb_f_acm,usb_f_ecm,usb_f_rndis,g_multi,usb_f_mass_storage
musb_am335x             1075  0
musb_dsps               8369  0
musb_hdrc              76236  1 musb_dsps
rfcomm                 46571  0
rfkill                 14659  2 bluetooth
u_ether …
Run Code Online (Sandbox Code Playgroud)

ubuntu beagleboneblack

5
推荐指数
1
解决办法
3686
查看次数

拦截C#中的所有异常,即使它们已被捕获

Visual Studio能够打破所有异常,即使它们被捕获.请注意CLR异常的"Thrown"下的复选框.检查时,throw即使catch调用堆栈中存在某个位置,调试器也会在每个语句上中断.

Visual Studio中的异常处理

有没有办法在代码中执行此操作?我在64位类库中使用.NET 4.5.1.我的目标是记录每个异常及其堆栈跟踪.这样,当我在没有Visual Studio的计算机上测试我的程序时,我会得到抛出异常的日志,甚至是我通过向用户显示对话框来处理的异常.我的程序是多线程的,因此它需要在任何线程中引发抛出异常的事件.

一种可怕的方法就是扩展Exception,将一些代码放在新类的构造函数中,并确保每个异常都扩展它.但是,这是不可行的,因为抛出的许多异常甚至不是我的代码而是CLR本身.

那么,关于如何引发或监听在抛出异常时引发的事件的想法,即使捕获该异常也是如此?我所见过的是各种捕捉未捕获异常的方法,这不是我想要的.

.net c# multithreading exception

4
推荐指数
1
解决办法
2579
查看次数