Bir arayüz ve bunun gibi bir sınıf içeren bir TestClass.cs dosyası var:
namespace CPierce.CSharpBridge
{
[System.Runtime.InteropServices.Guid("3D08DF02-EFBA-4A65-AD84-B08ADEADBEEF")]
public interface ICSide
{
//interface definition omitted...
}
[System.Runtime.InteropServices.Guid("CBC04D81-398B-4B03-A3D1-C6D5DEADBEEF")]
public partial class CSide : ICSide
{
//class definition omitted...
}
}
Bunu komut satırında derlediğimde ve üzerine regasm çalıştırdığımda:
csc /debug /t:library TestClass.cs
regasm TestClass.dll /tlb:TestClass.tlb
Başka bir yerde C ++ projesine dahil olmak için uygun güzel, büyük bir .tlb dosyası alıyorum ....
10/27/2011 01:50 PM 3,616 TestClass.tlb
TestClass.cs dosyasını Visual Studio'daki bir "Sınıf Projesine" koyduğumda, onu derleyin, regasm çalıştırın, sonuçta .tlb acıklı ve neredeyse işe yaramaz - arayüz yok, yöntem imzaları yok ...
[Compiled TestClass.cs as part of Project "ClassProject" in Visual Studio]
regasm ClassProject.dll /tlb:ClassProject.dll
10/27/2011 01:58 PM 1,132 ClassProject.tlb
This is the same C# code in both cases, one being compiled with Visual Studio one at the command line, giving me completely different results.
Ne verir?
-
Güncelleme: Hans, [ComVisible (true)]
özelliğinin eksik olmasının soruna neden olduğunu önerir. Denedim ve işe yaradı. Fakat bu hala soruyu cevaplamıyor, neden ? Hangi derleme yöntemini kullandığıma bağlı olarak neden farklı sonuçlar alıyorum?