【问题标题】:Automatically Embed Referenced Assemblies自动嵌入引用的程序集
【发布时间】:2014-06-11 04:59:33
【问题描述】:

我发现了一些关于如何将程序集嵌入到一个主 DLL 中的非常酷的文章。如果您想将 DLL 存储在 CRM 数据库中,这是必要的。 AppDomain.CurrentDomain.AssemblyResolve in dynamics crm

另一种方法是使用 ILMerge,我对此并不感兴趣。

在我的场景中,我想要嵌入的 DLL 来自同一个解决方案。嵌入程序集的技巧是创建一个文件夹,添加现有项并选择要使用的 DLL。然后转到 DLL 的属性并将它们标记为嵌入式资源。

问题是,在我构建解决方案之前,引用的 DLL 不会更新。所以,目前,我正在构建项目,将 /bin DLL 复制到项目程序集文件夹,然后再次重建项目。

更糟糕的是,我有不同的解决方案配置:调试、开发、QC、UAT 和生产。这会更改我从中获取 DLL 的 /bin 目录。

那么,有没有办法在项目构建时自动刷新项目文件夹 - 我可以根据当前的解决方案配置更改 DLL 的来源吗?

【问题讨论】:

  • 如果您右键单击任何项​​目并转到属性,您可以为任何构建配置创建自定义构建步骤(例如复制文件)或更改输出目录。您还可以指定额外的文件夹来查找依赖库。
  • @Egor - 我能够使用预构建步骤将来自特定项目 $(OutDir)s 的 DLL xcopy 放入我的嵌入式程序集文件夹中。访问$(OutDir) 文件夹使我免于创建单独的部署脚本。谢谢!

标签: deployment dynamics-crm-2011 assemblies embedded-resource microsoft-dynamics


【解决方案1】:

几个月来,我一直在构建解决方案,将 DLL 复制到 EmbeddedAssemblies 文件夹中,然后重新构建项目。这真的很痛苦,因为我必须编写一个 .bat 文件,该文件会在我的 整个 .sln 上调用 MSBuild,然后执行 XCOPY然后在 .csproj 上调用 MSBuild。

更糟糕的是,因为我无法控制 TFS 如何忽略文件,源代码控制不断看到这些文件发生变化,我不得不明确地将它们从签入中排除。我的队友通常不会那么体贴。

最终,我又看了一眼 ILMerge。在内部,它几乎和我做的一样。我切换到 ILMerge,从那以后我变得更快乐了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    相关资源
    最近更新 更多