我在服务器(网络共享)上部署了一次单击应用程序,是否有一种以编程方式从.dll.deploy文件中提取.dll的方法。一旦我们启动应用程序,它就会转换为dll并放置在user / appdata / local / ...文件夹中,但是我需要一种方法来提取dll而不启动应用程序。
感谢您的帮助。
答案 0 :(得分:0)
只需通过省略.deploy后缀重命名文件即可。
由于此任务可能会有点繁琐 - 取决于ClickOnce包中的文件数量 - 您可能希望使用文件重命名工具。
<强>更新强>: 我只是注意到你要求以编程方式执行此操作。这使得它变得更加容易,因为您不必担心找到文件重命名工具:
public class Program
{
private const string SourcePath = "\\\\ClickOnceDeployDir";
private const string TargetPath = "C:\\Users\\UserName\\Documents\\ClickOnceTargetDir";
public static void Main(string[] args)
{
var sourceDirectory = new DirectoryInfo(SourcePath);
var targetDirectory = new DirectoryInfo(TargetPath);
// you can omit this step if you would like to do the renaming in-place
Copy(sourceDirectory, targetDirectory);
foreach (var file in targetDirectory.GetFiles("*.deploy", SearchOption.AllDirectories))
{
var directoryName = file.DirectoryName;
if (directoryName != null)
{
// here it is: rename the file
file.MoveTo(Path.Combine(directoryName, Path.GetFileNameWithoutExtension(file.Name)));
}
}
}
private static void Copy(DirectoryInfo sourceDirectory, DirectoryInfo targetDirectory)
{
foreach (var file in sourceDirectory.GetFiles())
{
file.CopyTo(Path.Combine(targetDirectory.FullName, file.Name));
}
foreach (var directory in sourceDirectory.GetDirectories())
{
Copy(directory, targetDirectory.CreateSubdirectory(directory.Name));
}
}
}