Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.
Bu makalede, çok dosyalı derlemenin nasıl oluşturulacağı açıklanır ve yordamdaki her adımı gösteren kod sağlanır.
Uyarı
C# ve Visual Basic için Visual Studio IDE yalnızca tek dosyalı derlemeler oluşturmak için kullanılabilir. Çok dosyalı derlemeler oluşturmak istiyorsanız, komut satırı derleyicilerini veya Visual C++ ile Visual Studio'yu kullanmanız gerekir. Çok dosyalı derlemeler yalnızca .NET Framework tarafından desteklenir.
Çok dosyalı derleme oluşturma
Derlemedeki diğer modüller tarafından başvurulen ad alanlarını içeren tüm dosyaları kod modülleri halinde derleyin. Kod modülleri için varsayılan uzantı .netmodule'dür.
Örneğin, dosyanın adlı
Stringerbir ad alanına sahip olduğunu ve adlı bir sınıfımyStringeriçerdiğini varsayalımStringer. Bu sınıf, konsola tek bir satır yazan bir yöntem olanStringerMethodiçerir.// Assembly building example in the .NET Framework. using namespace System; namespace myStringer { public ref class Stringer { public: void StringerMethod() { System::Console::WriteLine("This is a line from StringerMethod."); } }; }// Assembly building example in the .NET Framework. using System; namespace myStringer { public class Stringer { public void StringerMethod() { System.Console.WriteLine("This is a line from StringerMethod."); } } }' Assembly building example in the .NET Framework. Namespace myStringer Public Class Stringer Public Sub StringerMethod() System.Console.WriteLine("This is a line from StringerMethod.") End Sub End Class End NamespaceBu kodu derlemek için aşağıdaki komutu kullanın:
cl /clr:pure /LN Stringer.cppcsc /t:module Stringer.csvbc /t:module Stringer.vbDerleyici seçeneğiyle modül parametresinin
/t:belirtilmesi, dosyanın derleme olarak değil modül olarak derlenmesi gerektiğini gösterir. Derleyici, bir derlemeye eklenebilen Stringer.netmodule adlı bir modül oluşturur.Kodda başvuruda bulunan diğer modülleri belirtmek için gerekli derleyici seçeneklerini kullanarak diğer tüm modülleri derleyin. Bu adım derleyici seçeneğini kullanır
/addmodule.Aşağıdaki örnekte, client adlı bir kod modülünün 1. adımda oluşturulan
Mainmodülündeki bir yönteme başvuran bir giriş noktası yöntemi vardır.#using "Stringer.netmodule" using namespace System; using namespace myStringer; //The namespace created in Stringer.netmodule. ref class MainClientApp { // Static method Main is the entry point method. public: static void Main() { Stringer^ myStringInstance = gcnew Stringer(); Console::WriteLine("Client code executes"); myStringInstance->StringerMethod(); } }; int main() { MainClientApp::Main(); }using System; using myStringer; class MainClientApp { // Static method Main is the entry point method. public static void Main() { Stringer myStringInstance = new Stringer(); Console.WriteLine("Client code executes"); myStringInstance.StringerMethod(); } }Imports myStringer Class MainClientApp ' Static method Main is the entry point method. Public Shared Sub Main() Dim myStringInstance As New Stringer() Console.WriteLine("Client code executes") myStringInstance.StringerMethod() End Sub End ClassBu kodu derlemek için aşağıdaki komutu kullanın:
cl /clr:pure /FUStringer.netmodule /LN Client.cppcsc /addmodule:Stringer.netmodule /t:module Client.csvbc /addmodule:Stringer.netmodule /t:module Client.vb/t:moduleBu modül gelecekteki bir adımda bir derlemeye eklendiğinden seçeneğini belirtin./addmoduleseçeneğini belirtin çünkü İstemci içindeki kod, Stringer.netmodule içindeki kod tarafından oluşturulan bir ad alanına başvurur. Derleyici, Stringer.netmodule adlı başka bir modüle başvuru içeren Client.netmodule adlı bir modül oluşturur.Uyarı
C# ve Visual Basic derleyicileri, aşağıdaki iki farklı söz dizimini kullanarak doğrudan çok dosyalı derlemeler oluşturmayı destekler.
İki derleme, iki dosyalı bir derleme oluşturur:
cl /clr:pure /LN Stringer.cpp cl /clr:pure Client.cpp /link /ASSEMBLYMODULE:Stringer.netmodulecsc /t:module Stringer.cs csc Client.cs /addmodule:Stringer.netmodulevbc /t:module Stringer.vb vbc Client.vb /addmodule:Stringer.netmoduleBir derleme iki dosyalı bir derleme oluşturur:
cl /clr:pure /LN Stringer.cpp cl /clr:pure Client.cpp /link /ASSEMBLYMODULE:Stringer.netmodulecsc /out:Client.exe Client.cs /out:Stringer.netmodule Stringer.csvbc /out:Client.exe Client.vb /out:Stringer.netmodule Stringer.vbDerleme bildirimini içeren çıkış dosyasını oluşturmak için Derleme Bağlayıcısı'nı (Al.exe) kullanın. Bu dosya, derlemenin parçası olan tüm modüller veya kaynaklar için başvuru bilgilerini içerir.
Komut istemine aşağıdaki komutu yazın:
al< modül adı><modül adı> …/main:< yöntem adı>/out:<dosya adı>/target:<derleme dosya türü>Bu komutta, modül adı bağımsız değişkenleri derlemeye eklenecek her modülün adını belirtir.
/main:seçeneği, derlemenin giriş noktası olan yöntem adını belirtir./out:seçeneği, derleme meta verilerini içeren çıkış dosyasının adını belirtir./target:seçeneği, derlemenin bir konsol uygulaması yürütülebilir dosyası (.exe) dosyası, bir Windows yürütülebilir dosyası (.win) dosyası veya bir kitaplık (.lib) dosyası olduğunu belirtir.Aşağıdaki örnekte Al.exe, myAssembly.exe adlı yürütülebilir dosyaya sahip bir konsol uygulaması derlemesi oluşturur. Uygulama Client.netmodule ve Stringer.netmodule adlı iki modülden ve yalnızca derleme meta verilerini içeren myAssembly.exeadlı yürütülebilir dosyadan oluşur. Derlemenin giriş noktası,
MainyöntemininMainClientAppsınıfında, Client.dll içinde bulunduğu yerdir.al Client.netmodule Stringer.netmodule /main:MainClientApp.Main /out:myAssembly.exe /target:exeBir derlemenin içeriğini incelemek veya bir dosyanın derleme mi yoksa modül mü olduğunu belirlemek için IL Disassembler (Ildasm.exe) kullanabilirsiniz.
Ayrıca bakınız
- Derlemeler oluşturma
- Nasıl yapılır: Derleme içeriğini görüntüleme
- çalışma zamanı kütüphaneleri nasıl bulur
- Çok dosyalı derlemeler