Şu anda kullanıcıların bir belge sürüm oluşturma uygulaması ile etkileşime girmesine izin veren ve uzak depo ile yerel makine arasında dosyaları eşitlemek için AutoCAD eklentisi üzerinde çalışıyorum, özel dosya özelliklerini kullanmayı planlamıştım. Bir dosya ilk olarak indirildiğinde özellikler ayarlanır ve ardından dosya kullanıcının yerel sürücüsünde kaldığı sürece devam eder. AutoCAD'e özel bir çözümle pek ilgilenmiyorum çünkü eklentim AutoCAD çizimleri (metin dosyaları, resim dosyaları, diğerleri) dışındaki dosyalarla ilgileniyor. Bu nedenle, olabildiğince çok potansiyel dosya türlerini işleyebilecek bir kütüphane istiyorum.DSOFile kitaplığı kullanılarak ayarlanan özel dosya özellikleri neden kaydedildikten sonra devam etmiyor?
Bu tür bir şeyin C# içinde nasıl uygulanacağını ararken, hemen DSOFile kitaplığına rastladım. Okuduğum her şey, MS Office için tasarlanmış olduğunu söyledi, ancak dosya sistemi NTFS (en azından benim anlayışım) olduğu sürece herhangi bir dosya ile çalışması gerekir. Düz metin belgeleri (.txt), AutoCAD çizimleri (.dwg) ve resimler (.jpg, .tif, vb.) Gibi dosyalarda özel özellikler belirlerken sorun yaşamadım. Ancak, bu dosyalardan herhangi birinin kaydedildiğini, özel özelliklerin silindiğini fark ettim. Özel mülkleri kaydettikten sonra kaydettiğim tek durum, MS Office belgeleri üzerinde yapıldı. Bu sorunun dosyaları (AutoCAD, MS Paint, notepad, vb.) Kaydetmek için kullandığım uygulama ile ilgili olduğunu düşündüm, ancak bunun% 100 emin olamıyorum. DSOFile'ı kullanmanın dışında bir çözüm bulmaya karar vermeden önce, SO üzerinde herhangi bir kimsenin bu konuyla ilgili bir fikir sahibi olup olmadığını görmek istedim.
Kendi kodumu kullanarak ve DSOFile ile gelen demoyu kullanarak test ettim ve aynı sonucu iki kez gördüm. MS Office (Word ve Excel) belgesi dışındaki herhangi bir dosya türünü kaydettikten sonra özel özellikler silinmiştir. İşte
var docProperties = new OleDocumentProperties();
docProperties.Open("myfile.txt", false, dsoFileOpenOptions.dsoOptionDefault);
try
{
object value = "some value";
docProperties.CustomProperties.Add("MyCustomProp", ref value);
}
finally
{
docProperties.Close(true); // save and close
}
DSOFile yalnızca MS Office dosyaları içindir - başkaları için kullanılamaz. –
Bunun olabileceği ortaya çıkıyor, ancak bunların kalıcı olması için dosyanın kaydedilmesi uygulaması özellikle bu özelliklerin kaydedildiğinden emin olmalıdır. Devam edin ve ofis dışı bir dosyada DSOfile ile birlikte gelen demo programını deneyin ve herhangi bir dosya türü için özellik almanın veya ayarlamada sorun olmadığını göreceksiniz. Bildiğim kadarıyla, özellikler için depolama mekanizması NTFS dosya sisteminin bir parçasıdır ve ofisle hiçbir ilgisi yoktur. Office sadece bu özellikleri kullanır ve bir dosyayı kaydettiğinde değerlerini açıkça kaydeder, oysa Notepad gibi uygulamalar yapmaz. –
Böylece, özel mülkleri Office dışı bir belgeye kaydedebilir ve bunların kalıcı olmasını sağlayabilirsiniz? AutoCAD dosyaları OLE Yapısal Depolama biçiminde kaydedilir mi? Bunu nasıl yaptığın hakkında mesaj gönderebilir misin? –