ऐसा लगता है कि इस फाइल, संस्करण = 10.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 89845dcd8080cc91 विधानसभा (ग पर स्थित Microsoft.SqlServer.Management.UserSettings.SqlStudio
वर्ग Microsoft.SqlServer.Management.UserSettings में परिभाषित के एक द्विआधारी धारावाहिक संस्करण है: \ प्रोग्राम फ़ाइलें \ Microsoft SQL Server \ 100 \ उपकरण \ Binn \ VSShell \ Common7 \ IDE \ Microsoft.SqlServer.Management.UserSettings.dll)।
कुछ विकास कौशल (विजुअल स्टूडियो या यहां तक कि पावरहेल) के साथ आप इस फ़ाइल को मूल कक्षा में deserialize कर सकते हैं, उन प्रविष्टियों को ढूंढें जिन्हें आप निकालना चाहते हैं और फ़ाइल को फिर से क्रमबद्ध करना चाहते हैं।
यह आपको विचार (.bin फ़ाइल की एक प्रतिलिपि पर काम कर) देना चाहिए ...
var binaryFormatter = new BinaryFormatter();
var inStream = new MemoryStream(File.ReadAllBytes(@"c:\temp\SqlStudio.bin"));
var settings = (SqlStudio) binaryFormatter.Deserialize(inStream);
foreach (var pair in settings.SSMS.ConnectionOptions.ServerTypes)
{
ServerTypeItem serverTypeItem = pair.Value;
List<ServerConnectionItem> toRemove = new List<ServerConnectionItem>();
foreach (ServerConnectionItem server in serverTypeItem.Servers)
{
if (server.Instance != "the server you want to remove")
{
continue;
}
toRemove.Add(server);
}
foreach (ServerConnectionItem serverConnectionItem in toRemove)
{
serverTypeItem.Servers.RemoveItem(serverConnectionItem);
}
}
MemoryStream outStream = new MemoryStream();
binaryFormatter.Serialize(outStream, settings);
byte[] outBytes = new byte[outStream.Length];
outStream.Position = 0;
outStream.Read(outBytes, 0, outBytes.Length);
File.WriteAllBytes(@"c:\temp\SqlStudio.bin", outBytes);
एड्रियन सवाल के बाद, मैं यह फिर से एक Win7 x64 बॉक्स पर विजुअल स्टूडियो 2010 मैं उपयोग करने की कोशिश एक ही त्रुटि मिली, इसलिए थोड़ा सा खोदने के बाद मुझे पता चला कि इसे हल करने के लिए कई कदम उठाए गए हैं। \ Program Files \ Microsoft SQL सर्वर:
- परियोजना संपत्तियों में '86' के लिए मंच लक्ष्य निर्धारित करें
- Microsoft.SqlServer.Management.SDK.SqlStudio के लिए एक संदर्भ जोड़ने (मेरी बॉक्स पर इस सी में था \ 100 \ टूल्स \ Binn \ VSShell \ Common7 \ IDE \ Microsoft.SqlServer.Management.Sdk.SqlStudio.dll)
- Microsoft.SqlServer.Management का संदर्भ जोड़ें।(पिछले एक पर एक ही निर्देशिका में) UserSettings
- कस्टम विधानसभा संकल्प प्रदर्शन के बाद यह स्पष्ट नहीं था
कस्टम विधानसभा संकल्प करने का एक सा लिया (मेरे लिए, कम से कम) क्यों CLR wouldn असेंबली को सही तरीके से हल नहीं करें और क्यों विजुअल स्टूडियो मुझे मैन्युअल रूप से संदर्भ जोड़ने की अनुमति नहीं देगा। मैं SqlWorkbench.Interfaces.dll के बारे में बात कर रहा हूँ।
अपडेट किए गए कोड इस तरह दिखता है:
internal class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
var binaryFormatter = new BinaryFormatter();
var inStream = new MemoryStream(File.ReadAllBytes(@"c:\temp\SqlStudio.bin"));
var settings = (SqlStudio) binaryFormatter.Deserialize(inStream);
foreach (var pair in settings.SSMS.ConnectionOptions.ServerTypes)
{
ServerTypeItem serverTypeItem = pair.Value;
List<ServerConnectionItem> toRemove = new List<ServerConnectionItem>();
foreach (ServerConnectionItem server in serverTypeItem.Servers)
{
if (server.Instance != "the server you want to remove")
{
continue;
}
toRemove.Add(server);
}
foreach (ServerConnectionItem serverConnectionItem in toRemove)
{
serverTypeItem.Servers.RemoveItem(serverConnectionItem);
}
}
MemoryStream outStream = new MemoryStream();
binaryFormatter.Serialize(outStream, settings);
byte[] outBytes = new byte[outStream.Length];
outStream.Position = 0;
outStream.Read(outBytes, 0, outBytes.Length);
File.WriteAllBytes(@"c:\temp\SqlStudio.bin", outBytes);
}
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
Debug.WriteLine(args.Name);
if (args.Name.StartsWith("SqlWorkbench.Interfaces"))
{
return Assembly.LoadFrom(@"C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\SqlWorkbench.Interfaces.dll");
}
return Assembly.Load(args.Name);
}
}
माइक्रोसॉफ्ट ने इसे एक्सएमएल फाइल नहीं बनाया है? वह कितना मुश्किल होगा? :( ठीक है, क्योंकि मैं * हर * अनुकूलन और * सभी * आइटम खो दूंगा, मुझे लगता है कि मैं इसे और भी –
हाँ, डूबना नहीं चाहता हूं। मैंने SqlStudio.bin के प्रारूप/संपादन पर जानकारी की तलाश की , लेकिन कुछ भी नहीं मिला। हां। –
इस प्रश्न के भविष्य के संदर्भों के लिए, मैंने आपका जवाब संपादित किया ताकि पाठक आगे जानता है कि यह नहीं किया जा सकता है, फिर वैकल्पिक समाधान प्रदान करता है। और फिर मैंने इसे स्वीकार कर लिया। –