使用Visual Studio 2015,使用2015工具集:当我尝试直接签署程序集时,如下所示:
签名总是失败,并出现以下错误:
LNK1346 ALINK operation failed (80040436) : Error signing assembly -- The process cannot access the file because it is being used by another process.
可以在Visual Studio 2013中签署相同的程序集(我今天刚刚升级了它).
这是2015年的一个已知问题(当我搜索该错误时找不到任何错误)?或者我做错了什么?
编辑:解决方法
这似乎是另一个McAfee AV错误.但是,还有另一种方法可以对文件进行签名,这可能会让McVirus有足够的时间释放它已经取出的锁.
程序集可以延迟签名,sn -R $(TargetPath) $(LinkKeyFile)
可以作为post build事件运行以完成签名.这适用于我和@Moop.
我想解析一组看起来像这样的命令行参数:
-p[project file path] -s[name 1]=[value 1] ... -s[name n]=[value n]
Run Code Online (Sandbox Code Playgroud)
只有一个项目p
和任意数量的设置s
.
我试过用 NDesk.Options
var set = new OptionSet {
{ "p=", "the project file", v => { /* do stuff */ } },
{ "s=", "a setting", (m, v) => { /* do stuff */ } },
};
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下效果很好,但是当value
文件路径(甚至引用)时\
,解析器会将所有内容都放到右边.我通过覆盖OptionSet
我继承的自己的类的解析方法来解决这个问题NDesk.Options.OptionSet
,但我想知道是否有任何库可以开箱即用地处理这种功能?
UPDATE
对不起,这不是\
我认为:
无论如何一组失败的例子是:
-sSetting=C:\Temp
-sSetting="C:\Temp"
-s"Setting=C:\Temp"
Run Code Online (Sandbox Code Playgroud)
他们都失败了 OptionException Error: Found 3 option values when expecting …
尝试通过Office互操作从我们的应用程序启动Word时,一些用户遇到了一个问题:
using Word = Microsoft.Office.Interop.Word;
public void ShowWord()
{
_word = new Word.ApplicationClass();
_word.Visible = true;
_word.Activate();
}
Run Code Online (Sandbox Code Playgroud)
如果word不能总是打开,则会引发COM异常,指出“无法激活应用程序”。Thread.Sleep(1000)
在调用之前添加一个pre _word.Activate()
可以防止这种情况,但显然并不理想。
public void ShowWord()
{
_word = new Word.ApplicationClass();
_word.Visible = true;
Thread.Sleep(1000)
_word.Activate();
}
Run Code Online (Sandbox Code Playgroud)
有没有人以前见过这个,并且知道是什么原因造成的,以及解决这个问题的正确方法是什么?
例如考虑:
var hset = new HashSet<int>();
// Fill the hset.
var enumerable = hset as IEnumerable<int>;
bool enumerable.Contains(0);
Run Code Online (Sandbox Code Playgroud)
LINQ是否使用HashSet具有高效实现的事实Contains
,或者它是否完全按照人们的预期在枚举器上运行?
我问的原因是我正在处理的组件有许多属性IEnumerable<T>
,但是之前的开发人员总是会将他用来创建可枚举对象的任何数据结构转换为数组,然后再将其分配给属性.我不确定这是好的做法还是完全浪费时间.
假设我有一个接口:IFoo<T1,T2>
和一个类Moo<T1> : IFoo<List<T1>, Stack<T1>>
.
在运行时我可以调用:typeof(Moo<>).GetInterfaces()
它给了我一个包含一种类型的数组,所以我想在某种意义上typeof(IFoo<List<>, Stack<>>)
可以在运行时创建类型.但是,该语法不起作用.
在运行时定义该类型的正确语法是什么?