Makale numarası: 910696 - Son Gözden Geçirme: 28 Kasım 2007 Çarşamba - Gözden geçirme: 2.1

Bilinen sorunlar için ADODB Primary ınterop Assembly (Visual Studio 2005 ile gelen PIA)

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Dikkat ADO ve ADO MD tam olarak bir Microsoft .NET Framework ortamında sınanmamıştır. Özellikle de hizmet tabanlı veya çok iş parçacıklı uygulamalarda zaman zaman sorunlara neden olabilirler. Bu makalede açıklanan teknikler ADO.NET'e geçiş sırasında yalnızca geçici bir önlem olarak kullanılmalıdır. Bu teknikler, yalnızca hiçbir uyumluluk sorunları olduğundan emin olmak için tam sınama gerçekleştirip sonra kullanmalısınız. ADO veya ADO MD bu şekilde kullanımından kaynaklanan sorunlar desteklenmez. Daha fazla bilgi için, aşağıdaki Microsoft Bilgi Bankası makalesine bakın:
840667   (http://support.microsoft.com/kb/840667/ ) Bir .NET Framework uygulamasında ADO ve ADO MD kullanırken beklenmedik bir hata alıyorsunuz

Bu Sayfada

Hepsini aç | Hepsini kapa

Giriş

Bu makalede, için ADODB Primary ınterop Assembly (Microsoft Visual Studio 2005 ile gelen PIA) bilinen sorunlar anlatılmaktadır.

Daha fazla bilgi

Atık toplama işlemi Microsoft Visual Basic 6.0 ve Microsoft Visual Basic. NET'te arasındaki farklılıklar

Atık toplama işlemi Visual Basic 6.0 ve Visual Basic. NET'te arasında önemli farklar vardır. Visual Basic 6.0 atık toplama işlemi Visual Basic .NET çöp toplama ' fazla ısrarlı birincil farktır. Visual Basic 6.0, nesne kapsam dışında bir nesne örneği düştüğünde hemen hemen yayımlanır. Aynı davranış, sıradan .NET çöp toplama veya Visual Basic .NET ile oluşmaz. Nesneleri çöp toplama .NET ile zaman uyumsuz olarak yayımlanmaktadır.

Atık toplama işlemi bu fark, büyük bir veri erişim kodunuzu etkisi, Visual Basic 6. 0'dan Visual Basic. NET'e taşıdığınızda olabilir.

Örneğin, nesne atık toplama işlemi tarafından iadesi, açık bir ADODB Recordset nesnesini kapatıldı. Visual Basic 6.0 kod yazma deneyimi olan geliştiriciler Visual Basic. NET'e kod geçirirken değiştirir çöp toplama semantiği bağımlı. .NET atık toplama işlemi zaman uyumsuz ve deterministic olmayan olduğundan bile temel sınama gerçekleştikten sonra değişiklikleri göremeyebilir.

Yalnızca Microsoft SQL Server 2000 veritabanları gibi bazı veritabanları, bağlantı tek bir etkin sonuç destekler. SQL Server için bir bağlantı açmak firehose imleç varsa, imleci kapatılıncaya kadar bağlantı engellendi. Varsayılan olarak, OLE DB sağlayıcıları, geçerli bağlantı Sorgu yürütülemiyor, sorguları yürütmek için ek bağlantılar açar. Bu nedenle, çok sayıda ActiveX Data Objects (ADO) kullanıcı bu sınırlama farkında değildir. Bu ek bağlantılar bağlantı havuzu içinde yer değil. Engellenmiş bağlantı, bir işlemde katılıyor, ek bağlantılar açma girişimleri başarısız olur.

Visual Basic 6.0 kodunuzu gözden geçirin ve açıkça tüm Recordset nesneleri bağlantı kapatıp öneririz. Kodunuzu Visual Basic. NET'e'e geçirdikten sonra daha sonra kodunuzu sınayın.

Bu bölüm, bu sorunun üç örnek ve her örnek için kod örnekleri listeler.

Örnek 1: açık Recordset nesneleri kapatmayın ek bağlantılar açtığınızda

Aşağıdaki kod örneği, Visual Basic 6.0 ile çalıştırdığınızda, yalnızca tek bir bağlantı gereklidir. Recordset nesne kapsam dışında düştüğünde ExecuteQuery yordamında oluşturulan Recordset nesnesini örtülü olarak kapatıldığından, bu geçerlidir. Kod örneği, SQL Server @@ SPID değişken sorguyu yürütmek için kullanılan sunucu işlemi tanımlayıcısı göstermek için kullanır. Kod çalıştırırsanız, sorgu @@ spid aynı değeri döndürmek görürsünüz sütun. Bu sonuç, sorguları, veritabanına aynı bağlantıda çalışacak anlamına gelir.
Public Sub Main()
    Dim strConn As String
    Dim cn As ADODB.Connection
    
    strConn = "Provider=SQLOLEDB;Data Source=.;" & _
              "Initial Catalog=Northwind;Trusted_Connection=Yes;"
    
    Set cn = New ADODB.Connection
    cn.Open strConn
    
    cn.Properties("Multiple Connections").Value = False
    
    ExecuteQuery cn, "SELECT @@spid, * FROM Customers"
    ExecuteQuery cn, "SELECT @@spid, * FROM Customers"
End Sub

Private Sub ExecuteQuery(cn As ADODB.Connection, strSQL As String)
    Dim rs As ADODB.Recordset
    Set rs = cn.Execute(strSQL)
    MsgBox rs(0)
End Sub
Benzer bir kod, Visual Basic. NET'te kullanırsanız, ikinci bir Recordset nesnesi @@ spid için farklı bir değer içerdiğini görürsünüz sütun. Bu değer, farklı bir bağlantı üzerinde sorgu veritabanına çalıştırıldı anlamına gelir.

Bu davranış ExecuteQuery yordamda oluşturulan Recordset nesnesi değil kapatıldı ve Recordset nesnesini .NET çöp toplayıcısını temizler kadar açık kalır farklıdır. Microsoft .NET Framework atık toplama işlemi zaman uyumsuz olarak gerçekleşir. SQL Server OLE DB sağlayıcısı, Recordset nesnesi ExecuteQuery yordamını yeniden çağrıldığı zaman kapatılmadı, ikinci sorguyu yürütmek için yeni bir bağlantı açar.

ExecuteQuery yordamında bir ça?r? rs.Close komut eklerseniz, sorgu aynı bağlantıda yürütülen sağlayın. Ek bağlantılar açmak için SQL Server OLE DB sağlayıcısı da açıkça söyleyebilirsiniz. Bunu yapmak için <a0></a0>, hemen bağlantıyı açtığınızda aşağıdaki kod satırını ekleyin:
cn.Properties("Multiple Connections").Value = False
bu kod, SQL Server OLE DB sağlayıcısı, OLE DB sağlayıcı yoksa ek bağlantılar açar, her bir özel durum neden olur.

Örnek 2: açık Recordset nesneleri kapatmayın, hareketleri ile çalışırken sorunlar oluşur

Engellenmiş bağlantı, bir işlemde katılıyor, ek bağlantılar açılamıyor. Aşağıdaki kod örneği, Visual Basic 6.0 ile çalıştırdığınızda, kod, açık bir hareketi olan tek bir bağlantıda birden fazla sorgu yürütür. Kod, aşağıdaki iki işlevi çağırır:
  • GetCustomers
  • GetOrders
Her bir işlevi, bir Recordset nesnesi açar.
Public Sub Main()
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;Data Source=.;" & _
            "Initial Catalog=Northwind;Trusted_Connection=Yes;"
    
    cn.BeginTrans
    
    GetCustomers cn
    GetOrders cn
    
    cn.RollbackTrans
    cn.Close
End Sub

Public Sub GetCustomers(Connection As ADODB.Connection)
    Dim rs As ADODB.Recordset
    Set rs = Connection.Execute("SELECT CustomerID, CompanyName FROM Customers")
End Sub

Public Sub GetOrders(Connection As ADODB.Connection)
    Dim rs As ADODB.Recordset
    Set rs = Connection.Execute("SELECT OrderID, CustomerID FROM Orders")
End Sub
GetCustomers işlevi çağrılarak oluşturulan Recordset nesnesini Visual Basic 6.0, bir işlev çağrısında sonunda örtülü olarak kapatıldı. Bu davranış açıklanan "Örnek 1: açık Recordset nesneleri kapatmayın ek bağlantılar açtığınızda" bölümü. Ancak, bir Recordset nesnesi kodunuzu Visual Basic. NET'te GetOrders işlevi çağıran süreye göre kapatılması değil. Bu nedenle, SQL Server için geçerli olan bağlantı müşteri bilgilerini, açık bir sonuç vardır. Geçerli bağlantı meşgul olduğundan, sorguda GetOrders işlevi için sonuçları alınıyor yeni bir bağlantı örtülü olarak oluşturulan gerektirir. Ancak, bir hareketin açık olduğu sürece, örtülü bir bağlantı oluşturamazsınız. Bu nedenle, kodun başarısız olur ve aşağıdaki hata iletisini alırsınız:
Yeni bir bağlantı oluşturamıyor çünkü el ile veya dağıtılmış işlem modunda.
Bu sorunu gidermek için <a0></a0>, açıkça GetCustomers ve GetOrders işlevlerini kullanarak oluşturulan Recordset nesneleri kapatın.

Örnek 3: örtülü olarak oluşturun ve sonra da Recordset nesneleri iptal sorunlar oluşur

Varsayılan olarak, Connection ve Command nesnelerinin Execute yöntemi örtülü olarak oluşturur ve yeni bir Recordset nesnesi döndürür. Visual Basic 6. 0'da, bu Recordset nesnesini bir nesne değişkeni içinde saklanır, Recordset nesnesinin kapsam dışına denk ve hemen kapatılır. Bu nedenle, aşağıdaki kod örneği, başarıyla Visual Basic 6.0 ile çalışır. Ancak, açıklanan hata iletisini alırsınız "Örnek 2: açık Recordset nesneleri kapatmayın, hareketleri ile çalışırken sorunlar ortaya" kodunu Visual Basic. NET'e geçirilirse bölümünde.
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;Data Source=.;" & _
        "Initial Catalog=Northwind;Trusted_Connection=Yes;"

cn.BeginTrans

cn.Execute "SELECT CustomerID, CompanyName FROM Customers"
cn.Execute "SELECT OrderID, CustomerID FROM Orders ORDER BY CustomerID"

cn.RollbackTrans
cn.Close
Bu kod örneğinde <a0>Connection</a0> nesnesinin <a1>Execute</a1> yöntemine çağrıları örtülü olarak Recordset nesneleri dönün. Dönüş değeri bir de?i?kene saklandığı için Visual Basic 6. 0 atık toplama işlemi hemen her Recordset nesnesini kapatır. Atık toplama olarak Visual Basic. NET'te ısrarlı değil. Müşteri bilgilerini içeren bir Recordset nesnesi, sipariş bilgileri için bir veritabanını sorgulamak üzere arama oluştuğunda yine de açıktır. Bu nedenle'de açıklanan hata iletisini alırsınız "Örnek 2: açık Recordset nesneleri kapatmayın, hareketleri ile çalışırken sorunlar ortaya" bölümü.

Bu sorunu gidermek için <a0></a0>, Execute yöntemini, <a1>Seçenekler</a1> parametresinde ExecuteOptionsEnum değeri adExecuteNoRecords değeri geçirir. Bunu yaptığınızda, Execute yöntemi bir Recordset nesnesi aşağıdaki kod örneği. gösterildiği gibi döndürmelidir. olduğunu gösterebilir
cn.Execute "SELECT CustomerID, CompanyName FROM Customers", , _
           ADODB.ExecuteOptionsEnum.adExecuteNoRecords

Sorun 2: Yük senaryoları için <a2>ADODB</a2> PIA önermeyiz

Biz kesinlikle, yük senaryolarda altında <a2>ADODB</a2> PIA gibi çok kullanıcılı Microsoft ASP.NET veya Microsoft COM + bileşenleri kullanarak engelleyin. Microsoft Sınama ekipleri ADODB PIA sınadı, sınama ekipleri ADODB PIA yük altında başarısız olduğunu buldu. .NET veri erişim kodu güvenle yük altında gerçekleştirmelisiniz, ADO.NET kullanarak kod yazma kesinlikle öneririz.

Sorun 3: 64-bit modunda ADODB PIA kullanmanızı önermeyiz

Biz kesinlikle, 64-bit uygulamalarda ADODB PIA kullanarak engelleyin. ADODB PIA, 64-bit modunda sınanmamıştır. Çoğu 64 bitlik senaryolarda, ASP.NET veya COM + gibi yüksek stres sunucu tarafı bileşenleri içerir. ADODB PIA, yük altında çalıştırırken sorun bilinen. 64-Bit OLE DB sağlayıcıları sınırlı kullanılabilirliğini ADODB PIA ile çalışmak için daha az çarpıcı 64-bit modunda da sağlar.

Sorun 4: sonradan bağlanan sorgu yürütme kullandığınızda hataları ortaya

ADODB iki sonradan bağlanan sorgu yürütme biçimlerini destekler. Sonradan bağlanan sorgu yürütme ıdispatch bağlama, bir Connection nesnesi yöntemleri sorguları gibi sorguları yürütmek için COM kullanmanıza olanak sağlar. ADODB sonradan bağlanan sorgu yürütme iki aşağıdaki biçimleri destekler:
  • Command nesnesinin Name özelliği ayarı "adlı" bir sorgu oluşturun.
  • Bir saklı yordam çağrısı olarak yürütülür.
Kod, Visual Basic 6. 0'dan Visual Basic. NET'e geçiş yaparken bu formlarla ilgili sorunları yaşayabilirsiniz.

Aşağıdaki örnekler, bu sorunları göstermektedir.

Örnek 1: aynı ada sahip bir ikinci sonradan bağlanan sorgu oluşturursanız, sorgu başarısız olur

Aşağıdaki kod örneği <a0>Command</a0> nesnesinin Name özelliği için aynı değeri kullanması sonradan bağlanan iki sorgu oluşturur.
Dim cn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim strConn As String
    
'Open a new Connection.
strConn = "Provider=SQLOLEDB;Data Source=.;" & _
          "Initial Catalog=Northwind;Trusted_Connection=Yes"
Set cn = New ADODB.Connection
cn.Open strConn
    
'Create a Command object, and then set the Name property 
'to enable the Command object as a late-bound method call.
Set cmd = New ADODB.Command
cmd.CommandText = "SELECT COUNT(*) FROM Customers"
cmd.Name = "GetCount"
Set cmd.ActiveConnection = cn
    
'Execute the Command object as a late-bound method call on the Connection.
Set rs = New ADODB.Recordset
cn.GetCount rs
Debug.Print rs(0).Value
rs.Close
Set rs = Nothing
    
'Release the Command object.
Set cmd = Nothing
    
'Create a new Command object, and then set the Name property
'to enable the Command object as a late-bound method call.
Set cmd = New ADODB.Command
cmd.CommandText = "SELECT COUNT(*) FROM Orders"
cmd.Name = "GetCount"
Set cmd.ActiveConnection = cn
    
'Execute the Command object as a late-bound method call on the Connection object.
Set rs = New ADODB.Recordset
cn.GetCount rs
Debug.Print rs(0).Value
rs.Close
Set rs = Nothing
    
'Clean up.
cn.Close
Komut nesnesi Nothing'e ayarlanmış olarak Visual Basic 6. 0'da, nesne tarafından çöp toplama iadesi. Bağlantı nesnesi komut nesnesi zarar bildirilir. Ikinci komut nesnesi Connection nesnesiyle ilişkilendirildiğinde, bu nedenle, çakışma var.

Visual Basic. NET'te benzer bir kod çalıştırdığınızda komut nesnesi ikinci komut nesnesi Connection nesnesiyle ilişkilendirilmiş olan süreye göre atık toplama işlemi tarafından iadesi değil. Bu nedenle, aşağıdaki özel durum hata iletisi alabilirsiniz:
Nesne koleksiyonunda zaten var. Eklenemiyor.
Bu sorunu gidermek için <a0></a0>, el ile bağlantı nesnesi ilk Command nesnesinden ilişkilendirmelerini kaldırın. Bunu yapmak için <a0></a0>, Command nesnesini silme, cmd.ActiveConnection yöntemi açıkça arayın. Bunu yapmak için <a0></a0>, aşağıdaki kod örneği. kullanın
'Visual Basic 6.0 syntax
Set cmd.ActiveConnection = Nothing

'Visual Basic .NET syntax
cmd.ActiveConnection = Nothing

Örnek 2: ikinci bir bağlantıda sonradan bağlanan sorguda aramak, sorguyu başarısız

Aşağıdaki kod örneği aşağıdaki görevleri, verildikleri sırayla gerçekleştirir:
  1. Iki bağlantı nesnesi oluştur.
  2. Bir Command nesnesi üzerinde her bir Connection nesnesi oluşturur. Her Command nesnesinin Name özelliği için aynı değere sahip.
  3. Her komut, sonradan bağlanan sorgu yürütme kullanarak çalıştırabilirsiniz.
Dim strConn As String, strSQL As String
Dim cn1 As ADODB.Connection, cn2 As ADODB.Connection
Dim cmd1 As ADODB.Command, cmd2 As ADODB.Command
Dim rs1 As ADODB.Recordset, rs2 As ADODB.Recordset
    
strConn = "Provider=SQLOLEDB;Data Source=.;" & _
          "Initial Catalog=Northwind;Trusted_Connection=Yes;"
strSQL = "SELECT COUNT(*) FROM Customers"
    
'Open connections.
Set cn1 = New ADODB.Connection
Set cn2 = New ADODB.Connection
cn1.Open strConn
cn2.Open strConn
    
'Create commands so that the commands can be executed as late-bound methods.
Set cmd1 = New ADODB.Command
Set cmd2 = New ADODB.Command
cmd1.CommandText = strSQL
cmd2.CommandText = strSQL
cmd1.Name = "GetCount"
cmd2.Name = "GetCount"
Set cmd1.ActiveConnection = cn1
Set cmd2.ActiveConnection = cn2
    
'Execute queries as late-bound methods.
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
cn1.GetCount rs1
cn2.GetCount rs2
MsgBox rs1(0).Value
MsgBox rs2(0).Value
    
'Clean up.
rs1.Close
rs2.Close
cn1.Close
cn2.Close
Bu kod örneği, Visual Basic 6. 0'ı kullandığınızda başarılı olur. Visual Basic .NET'i kullandığınızda, ancak bu kod örneği başarısız olur. Bu sorun aşağıdaki nedenlerden dolayı oluşur:
  • ADODB bu sorguları sonradan bağlanan yöntemlerini nasıl hazırlar
  • Bu yöntemler hakkında Visual Basic .NET derleyici varsayımlar
Command nesnesinin ActiveConnection özelliğini ayarlarken, ADODB Command nesnesinin Name özelliği ayarlanmış olup olmadığını denetler. Name özelliği ayarlı ise, böylece sorguyu sonradan bağlanan yöntemi Connection nesnesinde olarak yürütülebilecek ADODB sorguyu hazırlar. Bu örnekte, iki Command nesnesi CommandText özelliği için aynı değere sahip. Ancak, bunun bir çok simplistic örnektir. Command nesnesini, Name özelliği için aynı değere sahip olsa da, Command nesnesi CommandText değerleri çok farklı sorgu yürütülür olabilir. Bu nedenle, ADODB sonradan bağlanan yöntemleri için benzersiz bir yöntem imzaları oluşturur.

Bu farklar, Visual Basic .NET derleyici yapmaz. Başka bir çağrı GetCount yöntem bir Connection nesnesi üzerinde yapılan durumunda "GetCount" sorgu için ilk çağrıda Visual Basic .NET derleyici yöntem imzası önbelleğe alır. Visual Basic .NET, kodu ikinci bir "GetCount" sorgu aradığında, ikinci GetCount yöntemi için önbelleğe alınmış bir yöntem imzası yeniden kullanır. ADODB benzersiz yöntemi imza oluşturur, ikinci sorguyu sonradan bağlanan çağrısı başarısız olur.

Bu senaryo için yok bir geçici çözüm var.

Sorun 5: Veri türü dize ADODB Variant bazı veri türlerini ayarlamak için

Dize veya diğer ADODB nesneleri bazı özellikleri ayarlamak ADODB nesne modeli sağlar. Örneğin Recordset nesnesinin ActiveConnection özelliği Visual Basic 6.0 nesne tarayıcı VARIANT veri türü olarak görünür ve bir Connection nesnesi ya da bir bağlantı dizesine ayarlayabilirsiniz.

Kendi nesne oluşturdunuz ve bu işlevleri desteklemek istiyorsanız, ayrı özellik erişimcisi oluşturmanız gerekir. Bunu yapmak için <a0></a0>, kodu aşağıdaki örneğe benzer bir kod kullanın.
Public Property Let ActiveConnection (ByVal value As String)
    'Add logic here.
End Property

Public Property Set ActiveConnection (ByRef value As Object)
    'Add logic here.
End Property
.NET Framework biraz daha katı ve farklı veri türleriyle birden çok özellik erişimcisi'için izin vermiyor. Recordset nesnesinin ActiveConnection özelliği, bir Connection nesnesine ayarlamak ADODB PIA sağlar. ActiveConnection özelliği bir dize olarak ayarlamak istiyorsanız, aşağıdaki kod örneğinde gösterildiği gibi let_ActiveConnection yöntemi kullanmalısınız.
Dim strConn As String
Dim rs As ADODB.Recordset
    
strConn = "Provider=SQLOLEDB;Data Source=.;" & _
          "Initial Catalog=Northwind;Trusted_Connection=Yes;"
rs = New ADODB.Recordset
rs.let_ActiveConnection(strConn)
Aşağıdaki özelliklerini ayarlarken aynı yaklaşım gereklidir:
  • Recordset nesnesinin Source özelliği
  • Command nesnesinin ActiveConnection özelliği
Bu özellikler, nesneleri kabul eder. Dizeler için bu özellikleri ayarlamak için <a0></a0>, karşılık gelen let_ MethodName yöntemini kullanmanız gerekir.

Sorun 6: Parameters.Append yöntemini çağırdığınızda bir ınvalidcastexception özel durumu oluşuyor

Visual Studio .NET 2003 ve Visual Studio 2005 bulunan ADODB PIA varsayılan oluşturucu kullanılarak oluşturulan bir Parameter nesnesi ile birlikte Parameters.Append yöntemini çağırdığınızda oluşan bilinen bir sorun var.

Aşağıdaki kod örneği, ınvalidcastexception bir özel duruma neden olur.
Dim cmd As ADODB.Command
Dim p As ADODB.Parameter

cmd = New ADODB.Command
cmd.CommandText = "SELECT CustomerID FROM Orders WHERE OrderID = ?"

p = New ADODB.Parameter
p.Name = "@OrderID"
p.Type = ADODB.DataTypeEnum.adInteger
p.Value = 10248

cmd.Parameters.Append(p)

bu soruna geçici bir çözüm bulmak için <a0></a0>, Parameter nesnelerinizi Command nesnesinin CreateParameter yöntemi kullanarak aşağıdaki kod örneği gösterildiği gibi oluşturun.
Dim cmd As ADODB.Command
Dim p As ADODB.Parameter

cmd = New ADODB.Command
cmd.CommandText = "SELECT CustomerID FROM Orders WHERE OrderID = ?"

p = cmd.CreateParameter()
p.Name = "@OrderID"
p.Type = ADODB.DataTypeEnum.adInteger
p.Value = 10248

cmd.Parameters.Append(p)

Sorun 7:, Bileşenlerle, ADO 2.8 arabirimleri çalışma sorunlarla

Visual Studio 2005 ile gelen ADODB PIA, Visual Studio .NET 2003 ile gelen ve Microsoft .NET Framework 1.1 kullanılarak oluşturulan aynı bileşendir. ADODB PIA ile ADO 2.7 arabirimleri etkileşimde bulunmak için oluşturulan ve 2.8 arabirimleri ADO ile çalışmak üzere güncelleştirilmedi.

Bu nedenle, ADODB PIA, ADO 2.8 arabirimleri olacak bileşenleri ile birlikte kullanma denemesi başarısız. Bu senaryo ile <a2>ADODB</a2> PIA desteklenmiyor.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Studio 2005 Professional
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Team System Architect Edition
  • Microsoft Visual Studio 2005 Team System Developer Edition
  • Microsoft Visual Studio 2005 Team System Team Foundation:
  • Microsoft Visual Studio 2005 Team System Test Edition
  • Microsoft Visual Studio 2005 Express Edition
Anahtar Kelimeler: 
kbmt kbinfo KB910696 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:910696  (http://support.microsoft.com/kb/910696/en-us/ )