2010-12-04 12 views
20

için yanlış xsd seçer:Visual Studio hep bu yapılandırmaya sahip bir .NET 4.0 uygulama var, her şeyden önce App.config

Bu soru bir gibi aynı problem vardı
<?xml version="1.0"?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

: app.config "Could not find schema information" after converting to Visual Studio 2010/.Net 4.0: SupportedRuntime öğesi editör tarafından tanınmamış ve bir ipucu ortaya çıkarılmıştır.

Ardından cevabı takip ettim: app.config editöründeydim ve Properties penceresine gittim. Ben Schemas girişini seçtim.

DotNetConfig.xsd seçimini kaldırdım ve bunun yerine DotNetConfig35.xsd dosyasını seçtim, ancak VS her zaman otomatik olarak DotNetConfig.xsd öğesini ekler. Açıkça "bu şemayı kullanmayın" ya da hatta 'u şemasını listeden kaldırmaya ayarlansa bile, otomatik olarak tekrar listeye eklenir ve seçilir.

Şu anda aynı öğeleri tanımlayan iki şema seçtim, çok fazla uyarı alıyorum.

DotNetConfig35.xsd'yi kullanmak için şemayı nasıl değiştirebilirim ve DotNetConfig.xsd otomatik olarak yeniden eklensin mi?

cevap

39

Sorunu şu şekilde yorumluyorum: DotNetConfig.xsd dosyasının <startup> öğesinin tanımı yanlış ya da eksik. Tüm DotNetConfig.xsd, DotNetConfig35.xsd, DotNetConfig30.xsd ve DotNetConfig20.xsd dosyaların hat 230 Diğer taraftan

<xs:element name="startup" vs:help="configuration/startup" /> 

Microsoft startup settings schema olarak boş değil elemanı tarif içeriyor. Yani Visual Studio 2010 böyle modifikasyonu ve cihazın yeniden sonra aşağıdaki satırları

<xs:element name="startup" vs:help="configuration/startup"> 
    <xs:complexType> 
     <xs:choice minOccurs="1" maxOccurs="1"> 
      <xs:element name="requiredRuntime" vs:help="configuration/startup/requiredRuntime"> 
       <xs:complexType> 
        <xs:attribute name="version" type="xs:string" use="optional" /> 
        <xs:attribute name="safemode" type="xs:boolean" use="optional" /> 
       </xs:complexType> 
      </xs:element> 
      <xs:element name="supportedRuntime" minOccurs="1" maxOccurs="unbounded" vs:help="configuration/startup/supportedRuntime"> 
       <xs:complexType> 
        <xs:attribute name="version" type="xs:string" use="optional" /> 
        <xs:attribute name="sku" type="xs:string" use="optional" /> 
       </xs:complexType> 
      </xs:element> 
     </xs:choice> 
     <xs:attribute name="useLegacyV2RuntimeActivationPolicy" type="xs:boolean" use="optional" /> 
     <!-- see http://msdn.microsoft.com/en-us/library/bbx34a2h.aspx --> 
    </xs:complexType> 
</xs:element> 

için DotNetConfig.xsd ve %ProgramFiles%\Microsoft Visual Studio 10.0\Xml\Schemas dizine (veya 64 bit sistemlerde %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Xml\Schemas dizinden) tüm DotNetConfigXX.xsd dosyalarında yukarıdaki çizgiyi yerine önermek sen Açıkladığınız uyarılara sahip olmayacak. Sebep, tüm niteliklerin veya öğelerin şemasını daha ayrıntılı olarak tanımlayabilir (özellikle <startup> bölümünün daha ayrıntılı belgelerini bulursak), ancak sorunun nedenini ve düzeltmenin bir yolunu açıklamak istiyorum. DotNetConfig.xsd, DotNetConfig35.xsd ve diğer DotNetConfigXX.xsd dosyaları arasında seçim şema here açıklanan aynı dizinden catalog.xml dosyanın ihtiva dayalı yapılacaktır arada

. catalog.xml dosyasının standart sürümü aşağıdaki satırları

<Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig20.xsd" condition="starts-with($TargetFrameworkMoniker, '.NETFramework,Version=v2.')" /> 
<Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig30.xsd" condition="starts-with($TargetFrameworkMoniker, '.NETFramework,Version=v3.0')" /> 
<Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig35.xsd" condition="starts-with($TargetFrameworkMoniker, '.NETFramework,Version=v3.5')" /> 
<Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig.xsd" condition="starts-with($TargetFrameworkMoniker, '.NETFramework,Version=v4.') or $TargetFrameworkMoniker = ''" /> 

içeren Yani yukarıdaki dosyalardan biri tarafından açıklanan XSD şeması ile dosyaları gibi Visual Studio tarafından yorumlayıp olacak .config uzantıya sahip tüm dosyaları.

+1

Teşekkürler. Bu hile yaptı. Xsd'nin VS ile gönderilmesinin yanlış olabileceği ihtimalini bile düşünmedim. –

+0

@Sebastian P.R. Gingter: Rica ederim! Kimse mükemmel değildir. Microsoft da. Tüm .config dosyaları (app.config, web.config ve benzeri) için bir XSD'ye sahip olmak iyi bir fikir değildir. Yani yapılandırma şeması ile başka yakın sorunlar var. Yine de size yardım ettiğimi duyduğuma sevindim. Mach'un bağırsağı! – Oleg

+0

Ayrıca benim için 41 uyarıdan kurtuldum. Çok teşekkürler :) –

0

Bu eski bir yazıdır - ancak aynı sorunla karşılaştım.

Aldığım yaklaşım, Ken Johnsrude'un önerdiğiyle aynıydı - yeni bir şey yaratmak için.xsd dosyası:

http://w3stack.org/question/c-how-to-fix-error-could-not-find-schema-information-for-the-attributeelement-by-creating-schema/

  1. MSVS> Aç proje app.config

  2. XML Oluştur> Şema

    Bu% TEMP% olarak "app.xsd" yaratacak

    EXAMPLE: c:\users\paulsm\AppData\Local\Temp\app.xsd 
    
  3. App.xsd dizinini proje dizisine taşıyın

  4. App.Config,> Özellikler> Şemalar> ... app.xsd> kullan> Bu şemayı kullanın = EVET Bu sorunla karşılaştım

0

, akıl un- sağ tıklayın şemayı denetleme, Visual Studio'nun açık birden çok örneğine sahip olduğu ortaya çıkmadı.

(Ben VS2015 farklı proje ile aynı anda açık aynı zamanda bir proje ile açık ve VS2013 vardı.)

Not, Visual Studio ve ileri geri aynı proje üzerinde anahtarlama birden çok sürümünü/çözüm ayrıca görünüyor ilk etapta tekrarlanan şemalarla ilgili bazı sorunların nasıl gerçekleştiği.

İlgili konular