<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # /link (C# Compiler Options) 使編譯器將指定程序集中的 COM 類型信息提供給當前正在編譯的項目使用。 ## 語法 ``` /link:fileList // -or- /l:fileList ``` ## 參數 _fileList_ 必選。程序集文件名的逗號分隔列表。如果文件名包含空格,則將該文件名置于引號中。 ## 備注 通過 **/link** 選項,可以部署包含嵌入類型信息的應用程序。這樣,該應用程序無需引用運行時程序集,就可以使用運行時程序集中實現嵌入類型信息的類型。如果發布了各種版本的運行時程序集,則包含嵌入類型信息的應用程序可以使用各種版本,而不必重新編譯。有關示例,請參見[演練:嵌入托管程序集中的類型(C# 和 Visual Basic)](https://msdn.microsoft.com/zh-cn/library/dd409610.aspx)。 當使用 COM 互操作時,使用 **/link** 選項尤為有用。通過嵌入 COM 類型,您的應用程序不再要求目標計算機上存在主互操作程序集 (PIA)。 **/link** 選項指示編譯器將所引用的互操作程序集中的 COM 類型信息嵌入到所生成的編譯代碼中。該 COM 類型由 CLSID (GUID) 值標識。因此,您的應用程序可以在安裝有 CLSID 值相同的相同 COM 類型的目標計算機上運行。自動執行 Microsoft Office 的應用程序就是一個很好的示例。由于諸如 Office 之類的應用程序通常在不同的版本中保留相同的 CLSID 值,因此只要目標計算機上安裝有 .NET Framework 4 或更高版本,的應用程序就可以使用所引用的 COM 類型,并使用包含在所引用 COM 類型中的方法、屬性或事件。 **/link** 選項僅嵌入接口、結構和委托。不支持嵌入 COM 類。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 當在代碼中創建嵌入 COM 類型的實例時,必須使用適當的接口創建該實例。如果嘗試使用 CoClass 創建嵌入 COM 類型的實例,則會導致錯誤。 | 若要在 Visual Studio 中設置 **/link** 選項,請添加程序集引用并將 **Embed?Interop?Types** 屬性設置為 **true**。 **Embed?Interop?Types** 屬性的默認值為 **false**。 如果鏈接至一個 COM 程序集(程序集 A),而其本身又引用另一個 COM 程序集(程序集 B),則在符合下列任一條件的情況下也必須鏈接至程序集 B: * 程序集 A 中的類型繼承自程序集 B 中的類型或實現程序集 B 中的接口。 * 調用具有程序集 B 中的返回類型或參數類型的字段、屬性、事件或方法。 與 [/reference](https://msdn.microsoft.com/zh-cn/library/yabyz3h4.aspx) 編譯器選項類似,**/link** 編譯器選項使用 Csc.rsp 響應文件,該文件引用經常用到的 .NET Framework 程序集。如果希望編譯器不要使用 Csc.rsp 文件,請使用 [/noconfig](https://msdn.microsoft.com/zh-cn/library/8hww4s6c.aspx) 編譯器選項。 **/link** 的縮寫形式是 **/l**。 ## 泛型和嵌入類型 以下各節介紹在嵌入互操作類型的應用程序中使用泛型類型時所存在的限制。 ### 泛型接口 不能使用從互操作程序集中嵌入的泛型接口。這將在下面的示例中顯示。 ``` // The following code causes an error if ISampleInterface is an embedded interop type. ISampleInterface<SampleType> sample; ``` ### 具有泛型參數的類型 對于具有泛型參數并且該參數類型是從互操作程序集嵌入的類型,如果該類型來自外部程序集,則不能使用該類型。此限制不適用于接口。例如,請考慮在 [Microsoft.Office.Interop.Excel](https://msdn.microsoft.com/zh-cn/library/microsoft.office.interop.excel.aspx) 程序集中定義的 [Range](https://msdn.microsoft.com/zh-cn/library/microsoft.office.interop.excel.range.aspx) 接口。如果庫從 [Microsoft.Office.Interop.Excel](https://msdn.microsoft.com/zh-cn/library/microsoft.office.interop.excel.aspx) 程序集嵌入互操作類型并公開一個返回泛型類型的方法,該泛型類型的參數類型為 [Range](https://msdn.microsoft.com/zh-cn/library/microsoft.office.interop.excel.range.aspx) 接口,則該方法必須返回一個泛型接口,如下面的代碼示例中所示。 ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Office.Interop.Excel; public class Utility { // The following code causes an error when called by a client assembly. public List<Range> GetRange1() { ``` ``` } // The following code is valid for calls from a client assembly. public IList<Range> GetRange2() { ``` ``` } } ``` 在下面的示例中,客戶端代碼可調用在不出錯的情況下返回 [IList](https://msdn.microsoft.com/zh-cn/library/system.collections.ilist.aspx) 泛型接口的方法。 ``` public class Client { public void Main() { Utility util = new Utility(); // The following code causes an error. List<Range> rangeList1 = util.GetRange1(); // The following code is valid. List<Range> rangeList2 = (List<Range>)util.GetRange2(); } } ``` 下面的代碼編譯源文件 OfficeApp.cs 并引用 COMData1.dll 和 COMData2.dll 中的程序集來生成 OfficeApp.exe。 ``` csc /link:COMData1.dll,COMData2.dll /out:OfficeApp.exe OfficeApp.cs ``` ## 請參閱 [C# Compiler Options](https://msdn.microsoft.com/zh-cn/library/2fdbz5xd.aspx) [演練:嵌入托管程序集中的類型(C# 和 Visual Basic)](https://msdn.microsoft.com/zh-cn/library/dd409610.aspx) [/reference (C# Compiler Options)](https://msdn.microsoft.com/zh-cn/library/yabyz3h4.aspx) [/noconfig (C# Compiler Options)](https://msdn.microsoft.com/zh-cn/library/8hww4s6c.aspx) [Command-line Building With csc.exe](https://msdn.microsoft.com/zh-cn/library/78f4aasd.aspx) [互操作性概述(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173185.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看