以编程方式延迟标记汇编

时间:2014-02-04 03:17:17

标签: c#

我有一个要求是通过双击批处理文件来延迟对一个文件夹内的所有程序集进行签名。因此,我选择了C#Console Application来编写代码。

以下是延迟签署程序集的命令。

sn -R myAssembly.dll sgKey.snk

任何人都可以告诉我们如何以编程方式使用上述命令,或者是否存在对一个文件夹中的所有.dll执行相同操作的方法?

1 个答案:

答案 0 :(得分:0)

以下解决方案假设您已在C#应用程序中执行此操作。此脚本更适合批处理文件。

如果您不想恢复输出,此命令将用于执行某些任意程序集

System.Diagnostics.Process.Start(@"sn -R myAssembly.dll sgKey.snk");

否则你需要创建一个ProcessStartInfo对象,如下所示:

System.Diagnostics.ProcessStartInfo psi =
   new System.Diagnostics.ProcessStartInfo(@"sn -R myAssembly.dll sgKey.snk");

(我建议您阅读本课程并使用它。)

假设我们已经创建了一些包含所有文件的文件夹f:

foreach (FileInfo file in Folder.GetFiles())
{
    //Build our command string
    StringBuilder myCommand = new StringBuilder(@"sn -R ", 50);
    myCommand.Append(file.FullName);
    myCommand.Append("sgKey.snk");

    //Execute our command
    System.Diagnostics.Process.Start(myCommand);
}

或者,您可以构建使用相同逻辑的批处理脚本,我强烈建议您这样做。这样,您可以将复杂性降至最低(单个批处理脚本可以正常工作,而不是一个小型C#脚本调用批处理脚本来完成工作)。