我正在尝试创建一个程序,允许静默安装Windows的重要更新。我希望它是一个单独的.exe文件,没有任何额外的文件、库、图标等。我使用的是.Net 3.5。我将wuapi.dll包含在我项目的References文件夹中。编译后,wuapi.dll被复制到同一文件夹中,其中包含.exe文件(调试或发布)。
我读过不同的文章,关于使用ILMerge将.dll文件直接嵌入到.exe文件中。我的问题是,所有的Windows计算机都在system32或SysWow64文件夹中有wuapi.dll,那么我为什么要把它嵌入到我的项目中呢?有没有一种方法可以引用这些库或使用它们的函数而不将它们添加到项目中?
在References上,选择wuapi并将属性CopyLocal设置为false。此外,请确保SpecificVersion设置为false,否则它可能无法与用户计算机上安装的任何版本配合使用。
我认为wuapi可以在XP之后的任何Windows版本中找到。
通过将"嵌入互操作类型"设置为true,这仅适用于上的.Net 4.0。在.Net 3.5上,您不需要部署wuapi.dll本身,但需要部署生成的Interop文件。
有关更多信息,请查看:http://blogs.clariusconsulting.net/kzu/check-your-embed-interop-types-flag-when-doing-visual-studio-extensibility-work/