Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Opsi berikut mengontrol input pengkompilasi. Sintaksis MSBuild baru ditampilkan dalam cetak tebal. Sintaks csc.exe yang lebih lama ditampilkan dalam huruf code style.
-
Referensi /
-referenceatau-references: Metadata referensi dari file atau file rakitan yang ditentukan. -
AddModules /
-addmodule: Tambahkan modul (dibuat dengantarget:moduleke rakitan ini.) -
EmbedInteropTypes /
-link: Sematkan metadata dari file assembly interop yang ditentukan.
Referensi
Opsi Referensi menyebabkan pengkompilasi mengimpor informasi jenis publik dalam file yang ditentukan ke dalam proyek saat ini, memungkinkan Anda mereferensikan metadata dari file rakitan yang ditentukan.
<Reference Include="filename" />
filename adalah nama file yang berisi manifes perakitan. Untuk mengimpor lebih dari satu file, sertakan elemen Referensi terpisah untuk setiap file. Anda dapat menentukan alias sebagai elemen turunan dari elemen Referensi :
<Reference Include="filename.dll">
<Aliases>LS</Aliases>
</Reference>
Dalam contoh sebelumnya, LS adalah pengidentifikasi C# valid yang mewakili namespace layanan akar yang akan berisi semua namespace dalam rakitan filename.dll. File yang Anda impor harus berisi manifes. Gunakan AdditionalLibPaths untuk menentukan direktori tempat satu atau beberapa referensi perakitan Anda berada. Topik AdditionalLibPaths juga membahas direktori tempat pengkompilasi mencari rakitan. Agar pengkompilasi mengenali jenis dalam perakitan, dan bukan dalam modul, pengkompilasi perlu dipaksa untuk menyelesaikan jenisnya, yang dapat Anda lakukan dengan menentukan instans jenisnya. Ada cara lain untuk mengatasi nama jenis dalam rakitan untuk pengkompilasi: misalnya, jika Anda mewarisi dari jenis dalam rakitan, nama jenis kemudian akan dikenali oleh pengkompilasi. Terkadang perlu untuk mereferensikan dua versi yang berbeda dari komponen yang sama dari dalam satu perakitan. Untuk melakukan ini, gunakan elemen Alias pada elemen Referensi untuk setiap file untuk membedakan antara dua file. Alias ini akan digunakan sebagai kualifikasi untuk nama komponen, dan akan diselesaikan ke komponen di salah satu file.
Nota
Di Visual Studio, gunakan perintah Tambahkan Referensi . Untuk informasi selengkapnya, lihat Cara: Menambahkan atau Menghapus Referensi Dengan Menggunakan Manajer Referensi.
TambahkanModules
Opsi ini menambahkan modul yang dibuat dengan sakelar <OutputType>module</OutputType> ke kompilasi saat ini:
<AddModule Include=file1 />
<AddModule Include=file2 />
Di mana file, file2 adalah file output yang berisi metadata. File tidak boleh berisi manifes perakitan. Untuk mengimpor lebih dari satu file, pisahkan nama file dengan koma atau titik koma. Semua modul yang ditambahkan dengan AddModules harus berada di direktori yang sama dengan file output pada waktu proses. Artinya, Anda dapat menentukan modul di direktori apa pun pada waktu kompilasi tetapi modul harus berada di direktori aplikasi pada waktu proses. Jika modul tidak berada di direktori aplikasi pada waktu proses, Anda akan mendapatkan TypeLoadException.
file tidak dapat berisi rakitan. Misalnya, jika file output dibuat dengan opsi OutputTypemodul, metadatanya dapat diimpor dengan AddModules.
Jika file output dibuat dengan opsi OutputType selain modul, metadatanya tidak dapat diimpor dengan AddModules tetapi dapat diimpor dengan opsi Referensi .
EmbedInteropTypes
Menyebabkan pengkompilasi membuat informasi jenis COM dalam rakitan yang ditentukan tersedia untuk proyek yang saat ini Anda kompilasi.
<References>
<EmbedInteropTypes>file1;file2;file3</EmbedInteropTypes>
</References>
Di mana file1;file2;file3 adalah daftar nama file rakitan yang dibatasi titik koma. Jika nama file berisi spasi, sertakan nama dalam tanda kutip. Opsi EmbedInteropTypes memungkinkan Anda menyebarkan aplikasi yang memiliki informasi jenis yang disematkan. Aplikasi kemudian dapat menggunakan jenis dalam rakitan runtime yang mengimplementasikan informasi jenis yang disematkan tanpa memerlukan referensi ke perakitan runtime. Jika berbagai versi rakitan runtime diterbitkan, aplikasi yang berisi informasi jenis yang disematkan dapat bekerja dengan berbagai versi tanpa harus dikompresi ulang. Misalnya, lihat Panduan: Menyematkan Jenis dari Rakitan Terkelola.
Menggunakan opsi EmbedInteropTypes sangat berguna saat Anda bekerja dengan interop COM. Anda dapat menyematkan jenis COM sehingga aplikasi Anda tidak lagi memerlukan perakitan interop utama (PIA) pada komputer target. Opsi EmbedInteropTypes menginstruksikan pengkompilasi untuk menyematkan informasi jenis COM dari rakitan interop yang direferensikan ke dalam kode yang dikompilasi yang dihasilkan. Jenis COM diidentifikasi oleh nilai CLSID (GUID). Akibatnya, aplikasi Anda dapat berjalan pada komputer target yang telah menginstal jenis COM yang sama dengan nilai CLSID yang sama. Aplikasi yang mengotomatiskan Microsoft Office adalah contoh yang baik. Karena aplikasi seperti Office biasanya menyimpan nilai CLSID yang sama di berbagai versi, aplikasi Anda dapat menggunakan jenis COM yang dirujuk selama .NET Framework 4 atau yang lebih baru diinstal pada komputer target dan aplikasi Anda menggunakan metode, properti, atau peristiwa yang disertakan dalam jenis COM yang dirujuk. Opsi EmbedInteropTypes hanya menyematkan antarmuka, struktur, dan delegasi. Menyematkan kelas COM tidak didukung.
Nota
Saat Anda membuat instans jenis COM yang disematkan dalam kode, Anda harus membuat instans dengan menggunakan antarmuka yang sesuai. Mencoba membuat instans jenis COM yang disematkan dengan menggunakan CoClass menyebabkan kesalahan.
Seperti opsi kompilator Referensi , opsi kompilator EmbedInteropTypes menggunakan file respons Csc.rsp, yang mereferensikan rakitan .NET yang sering digunakan. Gunakan opsi pengkompilasi NoConfig jika Anda tidak ingin pengkompilasi menggunakan file Csc.rsp.
// The following code causes an error if ISampleInterface is an embedded interop type.
ISampleInterface<SampleType> sample;
Jenis yang memiliki parameter generik yang jenisnya disematkan dari rakitan interop tidak dapat digunakan jika jenis tersebut berasal dari rakitan eksternal. Pembatasan ini tidak berlaku untuk antarmuka. Misalnya, pertimbangkan Range antarmuka yang didefinisikan dalam Microsoft.Office.Interop.Excel rakitan. Jika pustaka menyematkan jenis interop dari Microsoft.Office.Interop.Excel rakitan dan mengekspos metode yang mengembalikan jenis generik yang memiliki parameter yang jenisnya adalah antarmuka, metode tersebut Range harus mengembalikan antarmuka generik, seperti yang ditunjukkan dalam contoh kode berikut.
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()
{
return null;
}
// The following code is valid for calls from a client assembly.
public IList<Range> GetRange2()
{
return null;
}
}
Dalam contoh berikut, kode klien dapat memanggil metode yang mengembalikan IList antarmuka generik tanpa kesalahan.
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();
}
}