2012-07-17 14 views
5

Şirketimizde kapsamlı bir şekilde kullanılacak bir WCF hizmeti yazıyorum ve WCF istemci proxy'lerini oluşturma işleminin bir parçası olarak oluşturmak ve bunları paketlemek istiyorum Bir hizmet, böylece hizmet istemcilerinin bu işlemi birkaç kez tekrarlamaları gerekmez. Bunu gerçekleştirmek için herkesin bildiği herhangi bir yolu var mı? MSBuild için önceden var olan derleme görevleri var mı?WCF proxy'lerini oluşturma işleminin bir parçası olarak oluşturun

, Proje oluşturma Svcutil aracılığıyla proxy sınıfı oluşturmak ve projeye ekleyin: Ben herhangi bir dahili görevlerin farkında değilim

cevap

3

olarak

+0

Bu çözüm için kodunuzu gönderir misiniz? Tam olarak ne yapmayı düşündüğümü. Aşağıdaki yazı gibi, toplu iş dosyaları kullanıyorum ve durdurmak istiyorum. – Jonathan

+0

@aloncatz, MSBuild'de gerekli komutları yürütmek için doğru fikirdir. Yukarıda yaptığım çözümden sonra bunu birkaç adım ileriye götürdüm, montajı bir nuget paketine derledim ve daha sonra bu nuget paketini şirketimin iç nuget sunucusuna yayınladım. –

0

, bu şimdiye böyle yaparız. (1) svcutil çağırır ve yukarıdaki sınıfın üzerine yazar ve (2) projeyi oluşturur bir MSBuild komut dosyası oluşturun.

İstediğiniz şeyi elde edemez miydiniz? Böyle T4Toolbox

İşte
-1

Bak T4 çiftleşmiş de ve projeler yaptığım sarılır ne:

1) İstemci kodu oluşturmak istediğiniz servisi projesi oluşturun

a) Takes the compiled WCF Service assembly, runs svcutil.exe on it to extract XSD and WSDL metadata for all the services in the Service assembly. 

b) Runs svcutil.exe again, this time on the extracted XSD and WSDL files to generate a .cs file containing the client 

c) Run csc.exe to compile the generated client code into a separate assembly. 

3) 'AfterBuild' hedef haline MSBuild görevi ekleyin: 2) şunları yapar bir MSBuild görev oluşturma hizmeti içeren projenin.

Artık hizmeti her kurduğumda, birden çok projede aynı Web Referansını yeniden oluşturmak zorunda kalmadan, şirketimizde birden çok başka projenin başvurabileceği istemci kodunu içeren otomatik olarak oluşturulmuş bir derleme elde ediyorum. Sadece bir tek derleme referans verebilir ve daha kolay bir şekilde güncelleyebilirler, sadece web referans jeneratörü tarafından oluşturulan birden fazla dosya yerine bir proje dosyasında bir satırı güncellemeye sahipler. Herhangi biri ilgilenirse, MSBuild görevinin kodunu ve onu kullanmak için XML pasajını gönderebilirim.

-1

Neden ayrı bir sınıf kitaplığı projesi oluşturmuyoruz? Bu projede, ihtiyacınız olan her hizmet için "Servis Referansı Ekle" kullanın.

Diğer kodlar daha sonra sınıf kütüphanesindeki sınıfları kullanabilir.

+1

Bu inanılmaz bir manüel ve bunu sürdürmek zorundayım. bir proje olarak.Bu şekilde, müşteri topluluğunun otomatik olarak oluşturulmasını sağlayabilirim, hiçbir zaman bir şey elde etmek zorunda kalmam, ve insanlar projeyi bulmak ve derlemeyi yapmak zorunda değiller, zaten meclis var, kullanıma hazırlar. –

+0

Başlangıçta referansları oluşturduğunuz zamanlar manüel olarak hangi yolla yapılır? Sadece hizmetler değiştiğinde bunları güncellemeniz gerekir. Daha sonra, bu projenin çıktısını, yazdığınız diğer kütüphane kodlarıyla aynı şekilde ele aldığınızı düşünün. –

0

Oluşturduğunuz MSBuild yaklaşımı, tam olarak elde etmek istediğim (şu anda bir toplu iş dosyası kullanarak). Lütfen MSBuild görevini ve XML pasajını gönderin/gönderin!

3

Aynı sorunu çözmeye çalışıyordum. İşte sonuçta bitti. .csproj'da, AfterBuild hedefi altında, SDK yolunu almak için bir görev ekleyin ve svcutil.exe dosyasını çalıştırmak için Exec komutunu kullanın. & quot; çünkü yol boşluk içeriyor.

<Target Name="AfterBuild"> 
    <GetFrameworkSdkPath> 
     <Output TaskParameter="Path" PropertyName="SdkPath"/> 
    </GetFrameworkSdkPath> 
    <Exec Command="&quot;$(SdkPath)bin\NETFX 4.5.1 Tools\svcutil.exe&quot; $(TargetPath)"/> 
</Target> 
İlgili konular