में प्रदर्शित करें तो मेरे पास एक फ़ोल्डर में डीएल की एक सूची होगी, मैं एक आवेदन के लिए एक डीएल जांचना चाहता हूं या नहीं। यदि ऐसा है तो मैं उस एप्लिकेशन का नाम ग्रिड में जोड़ना चाहता हूं। क्या कोई इसे प्रोग्रामेटिक तरीके से कैसे करना है। अग्रिम में धन्यवादप्रोग्रामेटिक रूप से डीएसी की जांच करने के लिए जीएसी में मौजूद है या नहीं। अगर इसे ग्रिड
उत्तर
यहां अनियंत्रित जीएसी एपीआई के लिए प्रलेखन है: DOC: Global Assembly Cache (GAC) APIs Are Not Documented in the .NET Framework Software Development Kit (SDK) Documentation।
यह एपीआई मूल कोड से उपयोग करने के लिए डिज़ाइन किया गया है, इसलिए this article आपको इसे C# से प्रोग्राम करने में मदद कर सकता है।
यदि आप त्वरित समाधान के बाद हैं, gacutil /l
काम करता है।
+1 एक अनियंत्रित एपीआई पर दस्तावेज प्रदान करने के लिए +1 ... – Achilles
आम तौर पर लोग यह मानते हैं कि जीएसी सी: \\ असेंबली में स्थित है, जो 99% सच है। तो आप उस फ़ोल्डर में मिली फ़ाइलों के माध्यम से कोड को फिर से लिखने के लिए लिख सकते हैं।
अधिक रूढ़िवादी तरीका फ़्यूज़न एपीआई का उपयोग करना होगा, जो COM-आधारित है। एक प्रबंधित आवरण इस ब्लॉग साइट पर उपलब्ध है:
http://blogs.msdn.com/junfeng/archive/2004/09/14/229653.aspx
साइट भी शामिल नमूना कामयाब कैसे स्थापित विधानसभाओं की गणना करने में फ्यूजन एपीआई का उपयोग करने दिखा कोड - कोड काफी आप के लिए बाहर लिखा है, तो बस CTRL + C और फिर Ctrl + V ... :)
http://blogs.msdn.com/b/junfeng/archive/2004/09/14/229650.aspx
HTH ...
मुझे लगता है कि उचित तरीके से फ्यूजन COM एपीआई है।
इसका इस्तेमाल करने के लिए:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace IsAssemblyInGAC
{
internal class GacApi
{
[DllImport("fusion.dll")]
internal static extern IntPtr CreateAssemblyCache(
out IAssemblyCache ppAsmCache, int reserved);
}
// GAC Interfaces - IAssemblyCache. As a sample, non used vtable entries
[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
Guid("e707dcde-d1cd-11d2-bab9-00c04f8eceae")]
internal interface IAssemblyCache
{
int Dummy1();
[PreserveSig()]
IntPtr QueryAssemblyInfo(
int flags,
[MarshalAs(UnmanagedType.LPWStr)]
String assemblyName,
ref ASSEMBLY_INFO assemblyInfo);
int Dummy2();
int Dummy3();
int Dummy4();
}
[StructLayout(LayoutKind.Sequential)]
internal struct ASSEMBLY_INFO
{
public int cbAssemblyInfo;
public int assemblyFlags;
public long assemblySizeInKB;
[MarshalAs(UnmanagedType.LPWStr)]
public String currentAssemblyPath;
public int cchBuf;
}
class Program
{
static void Main()
{
try
{
Console.WriteLine(QueryAssemblyInfo("System"));
}
catch(System.IO.FileNotFoundException e)
{
Console.WriteLine(e.Message);
}
}
// If assemblyName is not fully qualified, a random matching may be
public static String QueryAssemblyInfo(String assemblyName)
{
ASSEMBLY_INFO assembyInfo = new ASSEMBLY_INFO();
assembyInfo.cchBuf = 512;
assembyInfo.currentAssemblyPath = new String('\0',
assembyInfo.cchBuf) ;
IAssemblyCache assemblyCache = null;
// Get IAssemblyCache pointer
IntPtr hr = GacApi.CreateAssemblyCache(out assemblyCache, 0);
if (hr == IntPtr.Zero)
{
hr = assemblyCache.QueryAssemblyInfo(1, assemblyName, ref assembyInfo);
if (hr != IntPtr.Zero)
{
Marshal.ThrowExceptionForHR(hr.ToInt32());
}
}
else
{
Marshal.ThrowExceptionForHR(hr.ToInt32());
}
return assembyInfo.currentAssemblyPath;
}
}
}
उपयोग QueryAssemblyInfo
विधि।
HRESULT को 32 बिट पूर्णांक के रूप में परिभाषित किया गया है, इसलिए CreateAssemblyCache और QueryAssemblyInfo को IntPtr की बजाय int वापस करना चाहिए। –
'डमी 1() ',' डमी 2()' ... के लिए क्या हैं? – BanksySan
एक Assembly.LoadFrom करो और जाँच GlobalAssemblyCache
testAssembly = Assembly.LoadFrom(dllname);
if (!testAssembly.GlobalAssemblyCache)
{
// not in gac
}
डाउनवोट क्यों? – dvallejo
मुझे डाउनवोट के लिए कोई कारण नहीं दिखता है। मेरे लिए, यह अब तक का सबसे सुंदर जवाब जैसा प्रतीत होता है, क्योंकि इसे फ़्यूज़न/COM के साथ जटिल सामग्री की आवश्यकता नहीं है। यह भी काम करना चाहिए यदि आप [प्रतिबिंब-केवल संदर्भ] में असेंबली लोड कर रहे हैं (http://msdn.microsoft.com/en-us/library/ms172331.aspx) – derabbink
मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन नए यात्रियों की खातिर ...
हम के लिए एक (मुक्त) संलयन पुस्तकालय उपलब्ध है पर डाउनलोड करें जो वास्तव में यह करता है। प्रकटीकरण: हां, मैं संबद्ध हूं। नहीं, अगर आप डाउनलोड करते हैं तो मुझे पैसे नहीं मिलेंगे। ;-)
- 1. जीएसी प्रोग्रामेटिक रूप से
- 2. जीएसी के लिए, या जीएसी के लिए नहीं?
- 3. वेबसाइट पुनर्निर्देशन की जांच, प्रोग्रामेटिक रूप से
- 4. यदि मौजूद नहीं है तो adobe reader प्रोग्रामेटिक रूप से डाउनलोड करने के लिए कैसे करें
- 5. तालिका की जांच कैसे करें या मौजूद नहीं है
- 6. यह देखने के लिए स्ट्रिंग की जांच कर रहा है कि फ़ाइल स्थानीय रूप से मौजूद है या नहीं
- 7. अगर NSString संख्यात्मक है की जांच कैसे करें या नहीं
- 8. रेखा खींचें और इसे प्रोग्रामेटिक रूप से
- 9. जेएसपी में इसे शामिल/आयात करने से पहले आप कैसे जांच सकते हैं कि फ़ाइल मौजूद है या नहीं?
- 10. ग्रिड के लिए छवि ब्रश प्रोग्रामेटिक रूप से
- 11. प्रोग्रामेटिक रूप से जांच कैसे करें कि ऐप डीबग मोड में चल रहा है या नहीं?
- 12. .htaccess रीडायरेक्ट अगर फ़ाइल मौजूद नहीं है
- 13. डीएसी
- 14. PHP MYSQL अद्यतन अगर मौजूद है या INSERT नहीं है?
- 15. अगर मर्ज स्टेटमेंट में मौजूद नहीं है?
- 16. मैं प्रोग्रामेटिक रूप से जांच कैसे करूं कि एक जीआईएफ छवि एनिमेटेड है या नहीं?
- 17. क्या हमें जांच करनी चाहिए कि ईवेंट आवंटित करने से पहले तत्व मौजूद है या नहीं?
- 18. यह जांचने के लिए कि क्या कोई लक्ष्य मौजूद है या नहीं, इसे कॉल करने से पहले?
- 19. यह जांचने के लिए कि iCloud प्रोग्रामेटिक रूप से कॉन्फ़िगर किया गया है या नहीं,
- 20. तुलना करना अगर datetime.datetime मौजूद है या कोई नहीं
- 21. एचटीएमएल 5 फाइल एपीआई सरल जांच अगर फ़ाइल मौजूद है
- 22. क्या मुझे यह जांचना चाहिए कि इसे एक्सेस करने से पहले शब्दकोश में विशेष कुंजी मौजूद है या नहीं?
- 23. उपयोग "अगर मौजूद है"
- 24. एक ग्रिड व्यू में प्रोग्रामेटिक रूप से पंक्ति कैसे डालें?
- 25. सिल्वरलाइट ग्रिड कॉलम में प्रोग्रामेटिक रूप से उपयोगकर्ता नियंत्रण जोड़ने के लिए संभव है?
- 26. डीएसी को जीएसी पर तैनात नहीं किया गया - शेयरपॉइंट 2013, विजुअल स्टूडियो 2012, नेट एफडब्लू 4.5
- 27. प्रोग्रामेटिक रूप से संदर्भ जोड़ने के लिए
- 28. क्या पीडीएफ से पासवर्ड को प्रोग्रामेटिक रूप से पासवर्ड निकालने के लिए लाइब्रेरी मौजूद है?
- 29. पीएल/पीजीएसक्यूएल जांच अगर कोई पंक्ति मौजूद है
- 30. कस्टम तत्व के साथ प्रोग्रामेटिक रूप से ग्रिड बनाएं
यदि आपके पास किसी फ़ोल्डर में डीएलएल की एक सूची है, तो यह बहुत ही असंभव है कि फ़ोल्डर जीएसी का हिस्सा बनता है। –