2008-08-21 13 views
3

私たちは、DLLを1つに展開することを試みています。したがって、ILMergeです。ほとんどすべてがうまくいくようです。我々は、ClientScript.RegisterClientScriptResourceを使用するいくつかのWebコントロールを持っています。これらはマージ後に404-ingです(これらはマージの前に機能します)。ILMerge and Web Resources

は、例えば、私たちのコントロールの一つは、それがプロジェクトWebBrowserコントロールに配置されることになる

namespace Company.WebControls 
{ 
    public class ControlA: CompositeControl, INamingContainer 
    { 
    protected override void OnPreRender(EventArgs e) 
    { 
     base.OnPreRender(e); 
     this.Page.ClientScript.RegisterClientScriptResource(typeof(ControlA), "Company.WebControls.ControlA.js");     
    }  
    } 
} 

、組立Company.WebControlsようになります。下にはControlA.csとControlA.jsがあります。 ControlA.jsは埋め込みリソースとしてマークされています。私は次のものが含まAssemblyInfo.csで:

[assembly: System.Web.UI.WebResource("Company.WebControls.ControlA.js", "application/x-javascript")] 

これはCompanyA.dllにマージされた後に、このWebリソースを参照する適切な方法は何ですか? ILMergeのコマンドラインは以下の通りです(ビルド後のbinディレクトリから):​​

答えて

4

OK - 私はこれを動作させました。プライマリアセンブリのみがアセンブリ属性がコピーされているように見えます。 copyattrsがセットされると、最後のものがマージされるのではなく、マージされます(私が知る限り)。私は他のDLLを参照するためのダミープロジェクトを作成し、それらのプロジェクトからのすべてのWebリソースをダミーアセンブリ情報に含めました - 複数のプロジェクトの複数のリソースがすべて正しくロードされています。

ダミープロジェクトの最後のビルド後コマンドライン: "C:¥Program Files¥Microsoft¥ILMerge¥ILMerge.exe" /keyfile:.../Company.snk/wildcards:True/out:Company .dll Company.Merge.dll Company。* .dll

0

/copyattrsとともに/ allowMultipleを設定する必要があります。 ILMergeは組み込みリソースをすべてのアセンブリからマージすることしかできません。