WPF将dll文件嵌入到exe文件中

WPF将dll文件嵌入到exe文件中

第一步:打开.csproj文件,在Import节点后添加如下代码:

csharp 复制代码
<Target Name="AfterResolveReferences">
    <ItemGroup>
      <EmbeddedResource Include="@(ReferenceCopyLocalPaths)" Condition="'%(ReferenceCopyLocalPaths.Extension)' == '.dll'">
        <LogicalName>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</LogicalName>
      </EmbeddedResource>
    </ItemGroup>
  </Target>

第二步:在App.xaml.cs文件中添加如下代码:

csharp 复制代码
private static Assembly OnResolveAssembly(object sender, ResolveEventArgs args)
        {
            Assembly executingAssembly = Assembly.GetExecutingAssembly();
            var executingAssemblyName = executingAssembly.GetName();
            var resName = executingAssemblyName.Name + ".resources";

            AssemblyName assemblyName = new AssemblyName(args.Name); string path = "";
            if (resName == assemblyName.Name)
            {
                path = executingAssemblyName.Name + ".g.resources"; ;
            }
            else
            {
                path = assemblyName.Name + ".dll";
                if (assemblyName.CultureInfo.Equals(CultureInfo.InvariantCulture) == false)
                {
                    path = String.Format(@"{0}\{1}", assemblyName.CultureInfo, path);
                }
            }

            using (Stream stream = executingAssembly.GetManifestResourceStream(path))
            {
                if (stream == null)
                    return null;

                byte[] assemblyRawBytes = new byte[stream.Length];
                stream.Read(assemblyRawBytes, 0, assemblyRawBytes.Length);
                return Assembly.Load(assemblyRawBytes);
            }
        }

        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            AppDomain.CurrentDomain.AssemblyResolve += OnResolveAssembly;
        }

此时,dll文件就嵌入exe内了;

相关推荐
河西石头37 分钟前
WPF之UI进阶--完整了解wpf的控件和布局容器及应用
ui·wpf·样式·模板·控件模板·布局容器
充值内卷1 小时前
WPF入门教学十八 动画入门
wpf
界面开发小八哥1 小时前
DevExpress WPF中文教程:如何解决编辑单元格值的常见问题?
.net·wpf·界面控件·devexpress·ui开发
平凡而伟大(心之所向)1 小时前
‌WPF Prism框架的优势主要体现
wpf·plc·prism
充值内卷6 小时前
WPF入门教学十三 MVVM模式简介
wpf
界面开发小八哥6 小时前
DevExpress WPF中文教程:如何解决行焦点、选择的常见问题?
.net·wpf·界面控件·devexpress·ui开发
主宰者7 小时前
【WPF】多屏幕展示
wpf
爱吃番茄炒蛋..8 小时前
WPF DataGridTextColumn 时间列格式设置
wpf
充值内卷8 小时前
WPF入门教学十四 命令与ICommand接口
wpf
充值内卷8 小时前
WPF入门教学十一 数据绑定基础
wpf