c#强大的命名和版本控制



我们需要让我编写的c#应用程序自动更新它的一个主要dll。这个想法是当。exe启动时,它首先在互联网上检查更新-然后下载更新

一旦下载完成,我们计划在执行

之前对DLL执行签名检查。

我对。net程序集签名机制不熟悉,特别是涉及到版本化程序集(从1.0版本到1.1版本)

.NET提供什么可以帮助我吗?如何在强命名的约束下正确地工作?(我可以?)

我希望在这个问题上得到指导和技术,而不是API和机制

我觉得,你可能需要一个单独的进程(比如update.exe)来完成这项工作。

原因:如果你有一个进程正在运行(说MyApp.exe),如果它正在使用X.dll(加载的模块),那么你将无法更新(替换)X.dll,因为它会抛出一个异常

先。进程无法访问文件"x.d dll"因为它正在被其他进程使用。

因此,您可能必须在加载X.dll模块之前执行此更新/替换。如果需要控制加载程序集,则必须使用Reflections Assembly.Load。如果可以的话。

要获取dll的版本号,可以使用:

Assembly assembly = Assembly.LoadFrom("X.dll");
Version ver = assembly.GetName().Version;

要签名程序集,可以使用外部工具,如signtool.exe。它是Windows SDK的一部分,它接受命令行参数,您可以在这里找到更多关于它的信息

最新更新