【发布时间】:2016-03-10 11:58:26
【问题描述】:
应用程序名称、路径和 url 已重命名为“MyApp”和“example”,以便于阅读。
您好,我目前为我的应用程序使用 1 个 dll 文件,即 c# 中的 log4net。现在我将我的 dll 包含在来自
的引用中C:\Users\ashle\AppData\Roaming\MyApp
仅仅是因为我将公开发布我的申请。现在它在调试模式之外和内部都可以正常工作,但是当我在 /bin/debug 文件夹之外运行 exe 时,它会引发错误..
未处理的异常:System.IO.FileNotFoundException:无法加载 文件或程序集'log4net,版本=1.2.15.0,文化=中性, PublicKeyToken=669e0ddf0bb1aa2a' 或其依赖项之一。这 系统找不到指定的文件。 在 MyApp.Program.Main(String[] args)
我也将这段代码放入了我认为可以阻止它发生的地方。但我做错了什么?这段代码应该涵盖我的**
if (!Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/MyApp"))
{
Console.WriteLine("Created directory: " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/MyApp");
Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/MyApp");
}
if (!File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/MyApp/log4net.dll"))
{
Console.WriteLine("Please wait while we download some files...");
string downloadUrl = "http://example.com";
if (checkWebsiteAvalibility(downloadUrl))
{
WebClient webClient = new WebClient();
webClient.DownloadFileAsync(new Uri(downloadUrl + "/downloads/log4net.dll"),
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/MyApp/log4net.dll");
Console.Clear();
但是在 /bin/debug 之外单独运行 exe 时,它甚至不会显示“请稍候,我们正在下载一些文件...”行
【问题讨论】:
-
发布.exe时,必须将所有相关的.dll文件也发布到同一目录中
-
我猜您甚至在到达打印出“请稍候,我们正在下载一些文件...”的行之前就使用了日志记录