2011-10-04 11 views
5

Bir istemci için bir uygulama için kaynak kurtarma üzerinde çalışıyorum. .NET Reflector kullanarak uygulama kodunu kurtarmayı başardım. Ama şimdi kodu biçimlendirmek ve bireysel formları yeniden oluşturmak istiyorum, böylece her form için codebehind, designer ve resx dosyalarını kullanıyorum. Sorun şu ki, tüm görüntüler ".resources" dosyalarında bulunur. Reflector tarafından oluşturulan bu ".resources" dosyalarından görüntüleri nasıl çıkarırım?.NET derlemesinin bir derlemesi tarafından oluşturulan .resources dosyasındaki görüntüleri nasıl ayırım?

Program aracılığıyla görüntüleri ayıklamak zorunda kalmadan bir araç kullanmayı tercih ederim, ancak uygun bir uygulama bulamıyorsam kodu kullanacağım. Yani burada birisinin bunu daha önce yaptığını veya bir görüntüleyiciyi (tercihen ücretsiz!) Bilmesini ve bu görüntüleri elde etmemi sağlayan kaynak dosyaları için umuyorum. Aksi halde, kod da iyidir; Daha sonra görüntüleri ayıklamak için kendi küçük uygulamamı yazabiliyordum.

+0

Reflektör bunu da yapabilir, bir aksamın Kaynaklar düğümünü açın. Kaynağı sağ tıklayın ve Farklı Kaydet'i seçin. –

+0

Reflector ile görüntüleri ayıklamak istedim, ancak görebildiğim kadarıyla Reflector .resources dosyasını kaydeder, bu dosyaların içerdiği bitmapleri BMP biçiminde kaydetmenize izin vermez ... ? Bir .resources dosyası seçtiğinizde, bitmap'lerin bir listesini verir, ancak bitmapi sağ tıklattığımda, maalesef grileşmiş olan "farklı kaydet" seçeneği vardır. Bu, ücretli bir sürümde kullandığım deneme sürümünde eksik olan bir özellik olabilir mi? – BruceHill

cevap

9
+2

Teşekkürler, sepulka. Buraya bağladığınız programı test ettim ve iyi çalışıyor. :) Ayrıca ben de kullandığım bu programı buldum, http://jasonhaley.com/blog/post/2005/10/09/Resource-File-Extractor.aspx. Bu konuda yardım için teşekkür ederiz. – BruceHill

+1

Maalesef, kod projesinin çözümü, yaptığım projeyi bir montaj olarak tanımıyor. Clive Tong'un cevabı benim için çalıştı. –

+0

+1 - codeproject.com projesi eski (.NET 2.0 VS2008 PRK) - bu nedenle, şimdi kullandığınız .NET sürümüne güncelleyip yeniden derlediğinizden emin olun.VS2017 .NET 4.5 için benim için mükemmel çalışır. – MDV2000

7

ILSpy bu işi yapmalıdır - bkz. http://wiki.sharpdevelop.net/ILSpy.ashx'daki özellikler ve aşağıdaki ekran görüntüsü.

screenshot

+1

Bu yalnızca kaynakları bir .resources dosyası olarak kaydetmenizi sağlar. Anlayabildiğim kadarıyla, bitmap görüntülerini kaynak dosyasından ayıklamanıza izin vermez. – BruceHill

+0

Weird, ekran görüntüsünde her bitmap – poupou

+1

HI Poupou için bir Kaydet düğmesine sahiptir. Yardım etmeye çalıştığınız için teşekkürler. Evet, bu ekran görüntüsü aldatıcıdır ve olabildiğince görünmesini sağlar, ancak aslında bir _.resources_ dosyasında bulunan görüntüleri kaydetmenize izin vermez. Benim durumumda, ekran görüntüsünde olduğu gibi _resources_ klasörünü seçersem, görüntüdeki ilk giriş gibi kaynak dosyalarının bir listesini alırım. Yani benim durumumda, listelenen girişlerin hiçbiri gerçek BMP dosyaları değil, ancak bitmapler içeren kaynak dosyalarıdır. Kaynak dosyalarını Reflektör'de görüntülerseniz, her dosyanın içerdiği bitmap'lerin bir listesini görebilir, ancak bu ayrı bitmap'leri diske kaydedemezsiniz. – BruceHill

25

Bir komutu kullanarak, .resources dosyayı kaydedin ve sonra .resx dosyaya geri dönüştürmek için resgen aracını (VS2010 araçlarının parçası) kullanabilirsiniz çizgi gibi:

resgen foo.resources bar.resx 

.resx sonra bir C# projesi eklenebilir. Bunu yaptıktan sonra, tek tek görüntüleri açmaya çalışırsanız, VS2010 bunları bağımsız bir görüntü dosyasına çıkarmayı önerecektir.

+0

+1! Ücretsiz [VS2013 topluluk sürümü] (https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) ayrıca .resx dosyalarını açabilir ve ondan bir şeyler çıkarabilir. – rustyx

-1

JustDecompile bunu yapabilir. Bir kaynağı sağ tıklayıp içerik menüsünden Kaydet'i seçebilirsiniz.

+0

Denendi, değil. Onları sadece System.Byte [] 'dizesi olarak gösterir. –

İlgili konular