如何防止在Windows Forms应用程序版本中创建.exe.config(Visual Studio Community 2019-C#)

亚历杭德罗·蒙蒂利亚

我正在使用目标框架.NET 2.0在旧项目(Windows窗体应用程序)中工作。目标是构建一个.exe不依赖任何配置文件的文件(尤其是不依赖的文件,.exe.config因为应用程序不需要此配置文件中的任何内容)。

项目特点:

Application:
Targe framework: .NET Framework 2.0
Output type: Windows Application
Auto-generate binding redirecs: Not enabled

Build:
Platform target: Any CPU

Visual Studio Community 2019, version 16.1.3

该解决方案中有一个app.config文件,我曾尝试删除文件,但由于某种原因,该文件似乎仍保留在项目中。当我说似乎保留在项目中是因为我遵循以下步骤:

  1. 在解决方案资源管理器中,右键单击App.config,然后单击从项目中排除
  2. 重建项目,并且仍在.exe.config生成。
  3. 再次在解决方案资源管理器>添加>新建项目中,当我尝试添加名称为App.configVS的应用程序配置文件时,显示以下消息:名称为'App.config'的文件已经存在。您要更换吗?

(我也尝试过右键单击App.config,然后单击“删除”选项)

这似乎表明配置文件没有有效地从项目中删除,因此.exe.config仍会生成。

另外,我检查了这篇文章,并尝试更改文件属性(“构建操作”,“复制到输出目录”等),但.exe.config文件仍保留在构建中。

最后,我尝试过(可能更是一次绝望的尝试),取消选中“自动生成绑定重定向”,这会阻止生成,.exe.config.exe不能正常运行。

就像其他信息一样,的内容.exe.config是:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Company.Afis.ImageContainer" publicKeyToken="97cac07b8409e999" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.5.0.1827" newVersion="2.5.0.1827" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

我检查过的其他帖子:

如果需要任何其他信息,请告诉我进行更新。

雷扎·阿盖伊(Reza Aghaei)

禁用程序集绑定重定向的自动生成,而是处理AssemblyResolve当前事件AppDomain.CurrentDomain并在事件处理程序中加载请求的程序集。

  • 禁用自动生成程序集绑定重定向

    右键单击项目,选择“属性”,然后在项目属性页的第一个选项卡(“应用程序”选项卡)中,取消选中“自动生成绑定重定向”您可以通过编辑项目文件和设置来执行相同操作<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>

  • 处理程序集解析事件

    您应该在运行时尝试加载程序集之前添加事件处理程序。例如,在Program的静态构造函数中例如,在下面的代码中,我假设应用程序正在寻找MyAssemblyMyAssembly2.dll在应用程序文件夹中拥有的文件。

    static Program()
    {
        AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
    }
    private static Assembly CurrentDomain_AssemblyResolve(object sender, 
        ResolveEventArgs args)
    {
        if (new AssemblyName(args.Name).Name == "MyAssembly")
            return Assembly.LoadFrom(
                Path.Combine(Application.StartupPath, "MyAssembly2.dll"));
        throw new Exception();
    }
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Visual Studio 2019中为窗口表单应用程序创建setup.exe文件?

在MS Visual Studio Community 2015中向C#Windows Forms应用程序添加依赖项

安装 2019 Visual Studio Community 时,如何添加 C# 模板?

在Visual Studio Community 2019中创建TypeScript项目

无法将 .NET Core 5.0 应用程序与 Visual Studio Community 2019 版本 16.7.5 一起使用

如何下载Visual Studio Community Edition 2017(不是2019)

在Visual Studio Community 2019中生成包含文件的图形

如何使用Visual Studio Community 2015导出exe

如何在Microsoft Visual Studio Community 2017中将.py编译为.exe?

如何在Visual Studio Community 2013中创建ASP.NET MVC 5 Web应用程序?

无法在 Visual Studio 2019 C# Windows 窗体应用程序上打开设计视图

C# 9.0 支持 Visual Studio 2019 中的顶级程序

如何从Visual Studio 2019禁用Perfwatson2.exe

更新到 2020 年 5 月版本后无法在 Visual Studio 2019 中创建 .exe 文件

如何在Visual Studio 2019中选择Visual C#类模板?

Visual Studio 2019 C++ 桌面应用程序;如何制作子窗口?

如何为C ++ Visual Studio 2019指定应用程序图标?

用于查看功能应用程序的Visual Studio 2019 C#热键

如何使用Visual Studio 2019构建GTK +应用程序?

如何修复 MyMethod () 的 Visual Studio 2019 C# 间距

在Windows 10和Visual Studio Community 2019下的Bazel中使用boost

如何使用Visual Studio 2019社区创建.NET Core 3控制台应用程序?

如何使用Visual Studio 2019创建控制台应用程序项目

Visual Studio Community 2019创建了一个项目,但是无法打开它创建的项目?

Visual Studio C ++控制台应用程序生成并运行,但未创建EXE文件

在Visual Studio 2019中为C#激活自动完成

在Visual Studio 2019中C#类库的导出失败

在Visual Studio 2019中组织C#使用?

如何在 Visual Studio 2019 中添加 Google MyBusiness C# 客户端库