<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        如何合并多個 .NET 程序集

        來源:懂視網 責編:小采 時間:2020-11-27 22:38:34
        文檔

        如何合并多個 .NET 程序集

        如何合并多個 .NET 程序集:任何曾今尋找過一個將多個程序合并到一個文件中的解決方案的人,可能都聽說過項 ILMerge, SmartAssembly, 等這樣的工具. 另外一個知名的方案是將DLL作為資源進行嵌入(如果感興趣,這里有一篇描述這一方案的精彩文章:從嵌入的資源出載入DLL[^]). 而在
        推薦度:
        導讀如何合并多個 .NET 程序集:任何曾今尋找過一個將多個程序合并到一個文件中的解決方案的人,可能都聽說過項 ILMerge, SmartAssembly, 等這樣的工具. 另外一個知名的方案是將DLL作為資源進行嵌入(如果感興趣,這里有一篇描述這一方案的精彩文章:從嵌入的資源出載入DLL[^]). 而在

        任何曾今尋找過一個將多個程序合并到一個文件中的解決方案的人,可能都聽說過項 ILMerge, SmartAssembly, 等這樣的工具.

        另外一個知名的方案是將DLL作為資源進行嵌入(如果感興趣,這里有一篇描述這一方案的精彩文章:從嵌入的資源出載入DLL[^]).

        而在某些情況中,我意識到有必要使用這些方法.如果我們有了這些匯編的源代碼,我們就能通過在編譯時將所有這些源代碼文件導入一個項目,來獲得這些東西的一個完美組合.

        在這里我將嘗試對如何做到這件事進行簡要的描述.

        為了進行演示,讓我們假設我們有一個控制臺應用程序 (這是我們的主程序) ,引用并且使用了兩個類庫 (我們的二級程序),而我們想把它們組合成一個文件:

        我們按照設想構建了這個解決方案,獲取了這三個程序:

        注意 MyExecutable 的項目文件 (MyExecutable.csproj)是一個基于XML的文件,而如果我們查看它的內容,會發現一些ItemGroup節點. 這些節點博阿含定義了構建過程輸入的子元素. 這些子元素可以引用需要被編譯的應用程序的資源文件, 或者是一些需要被復制的資源,以及需要在構建處理中被包含進去的程序集 (如果對此感興趣,你可以在MSDN MSBuild上了解到更多有關Visual Studio項目文件的信息).

        現在讓我們定位到 ItemGroup 節點,里面引用了要被包含進來的程序集:

        <ItemGroup>
          <ProjectReference Include="..\MyLibrary1\MyLibrary1.csproj">
            <Project>{ea53ca82-13d7-4be1-b95a-4d9d7853d46e}</Project>
            <Name>MyLibrary1</Name>
          </ProjectReference>
          <ProjectReference Include="..\MyLibrary2\MyLibrary2.csproj">
            <Project>{c31d21f3-e86a-4581-b4e8-acae6644d19e}</Project>
            <Name>MyLibrary2</Name>
          </ProjectReference>
        </ItemGroup>

        這里,我們將添加一個條件,指示在Debug模式中構建 MyExecutable 時要到MSBuild那里去使用這些項目引用:

        <ItemGroupCondition="'$(Configuration)'=='Debug'">

        而對于發布(Release)模式,我們將來自 MyLibrary1 和 MyLibrary2 的所有源代碼文件都包含進來,也進行編譯. 我們會利用一個通配符文("\**\*.cs")將目錄及其子目錄匯總所有的CS文件都包含進來. 通配符文也會將一些我們不想要的資源代碼文件包含進來(obj文件夾中的TemporaryGeneratedFile_[guid].cs 以及Property文件夾中的AssemblyInfo.cs文件就是這種情況) 因此我們將對它們進行排除:

        <ItemGroup Condition=" '$(Configuration)' == 'Release' ">
          <Compile Include="..\MyLibrary1\**\*.cs"
                   Exclude="..\MyLibrary1\Properties\AssemblyInfo.cs;
                            ..\MyLibrary1\obj\**;
                            ..\MyLibrary1\bin\**">
            <Link>MyLibrary1\%(RecursiveDir)%(Filename)%(Extension)</Link>
            <Visible>false</Visible>
          </Compile>
          <Compile Include="..\MyLibrary2\**\*.cs"
                   Exclude="..\MyLibrary2\Properties\AssemblyInfo.cs;
                            ..\MyLibrary2\obj\**;
                            ..\MyLibrary2\bin\**">
            <Link>MyLibrary2\%(RecursiveDir)%(Filename)%(Extension)</Link>
            <Visible>false</Visible>
          </Compile>
        </ItemGroup>

        這樣就可以了,讓我們保存 MyExecutable.csproj 中的修改,并在發布模式中對解決方案進行重新構建:

        我想要強調的最后一件事情就是,因為我們是在形式上將所有的程序集源文件的編譯移到一個項目中, 項目需要能夠編譯那些文件才行. 因此你需要考慮下面這些事情:

        為了能構建成功,主程序需要有二級程序所有的引用,資源,設置等等.

        所有的程序集都需要用同一種 .NET 語言編寫.

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        如何合并多個 .NET 程序集

        如何合并多個 .NET 程序集:任何曾今尋找過一個將多個程序合并到一個文件中的解決方案的人,可能都聽說過項 ILMerge, SmartAssembly, 等這樣的工具. 另外一個知名的方案是將DLL作為資源進行嵌入(如果感興趣,這里有一篇描述這一方案的精彩文章:從嵌入的資源出載入DLL[^]). 而在
        推薦度:
        標簽: 如何 多個 合并
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久久久久久99精品免费观看 | 免费日韩在线视频| 亚洲av午夜精品无码专区| 一级毛片免费不卡在线| 亚洲天堂中文资源| 4虎1515hh永久免费| 亚洲人成综合在线播放| 国色精品卡一卡2卡3卡4卡免费| 久久久久亚洲av无码专区导航| 久久久精品免费视频| 亚洲国产成人片在线观看| 亚洲免费人成在线视频观看| 午夜亚洲AV日韩AV无码大全| 免费观看成人久久网免费观看| 亚洲无线码在线一区观看| 热99RE久久精品这里都是精品免费 | h视频免费高清在线观看| 久久久久亚洲AV无码专区网站| 国产免费久久久久久无码| 亚洲AV无一区二区三区久久| 国产精品白浆在线观看免费| 亚洲宅男天堂a在线| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 精品国产香蕉伊思人在线在线亚洲一区二区 | 老司机午夜免费视频| 狠狠综合久久综合88亚洲| 国产一精品一AV一免费| 亚洲第一永久在线观看| 妞干网在线免费视频| 九九免费观看全部免费视频| 亚洲AV无码一区二区三区系列| 57pao国产成永久免费视频| 亚洲精品亚洲人成在线| 亚洲婷婷国产精品电影人久久| 国产成人AV片无码免费| 亚洲一本一道一区二区三区| 亚洲第一区精品观看| 999久久久免费精品播放| 亚洲国产精品网站在线播放 | 青春禁区视频在线观看直播免费| 阿v视频免费在线观看|