2011-05-07 15 views

cevap

1

Visual Studio'da, etkin dosyayı açtığınızda bir 'özellikler' bölümü vardır. App.config için, seçenekleriEND_DFN ikinci veya üçüncü seçenek ya istiyorum

  • Do Not Copy
  • Copy if Newer
  • Copy Always

olan Copy to Output Directory adlı bir özelliğe sahiptir.

+6

Ancak bu seçenekler bin dizine gitmek için geçerli çözümde bir projede bir dosya için vardır; Harici hatalar için değil, Referans Ekle seçeneğini kullanarak referans gösterebilirsiniz. –

1

Varsayılan CLR ana bilgisayarı ile, yalnızca bir EXE .config dosyasına sahip olabilir. DLL değil. .dll.config dosyasını kopyalamak, dosyayı açıkça açıp açmazsanız, anlamsız olmalıdır. Bu durumda karışıklığı önlemek için farklı bir ad kullanmalısınız.

+0

Neden dll için bir dosyam yok? Bununla ilgili problem nedir? Bildiğiniz gibi ASP.NET web siteleri dlls olarak derlenmiştir. Web yapılandırmalarının mevcut olmadığını mı söylüyorsunuz? – oleksii

+0

Sorun şu ki desteklenmiyor. ASP.NET farklı bir CLR sunucusudur, farklı kuralları vardır. –

1

Aynı problem vardı. Özellikler uygulaması, ihtiyacınız olan yerde app.config dosyasını kopyalamanıza yardımcı olmayacaktır. Entegrasyon birimi testi yaptığınız gibi.

  1. Kullanım sonrası build olay

    kopya/Y “$ (ProjectDir) App.config” “.... \ test \ Debug \ $ (TargetFileName): O zaman iki seçenek olabilir. yapılandırma”

  2. Elle libA.Test.dll

için libA.dll gelen yapılandırma dosyası bölümleri kopya bunu için daha sağlam olduğunu kanıtladı olarak 2 kullanarak sonunda ben mi.

3

dll projesindeki app.config dosyasını [dllname] .dll.config olarak yeniden adlandırın. Aynı dosyanın özelliklerini "her zaman kopyala" olarak değiştirin ve yeniden oluşturun. Benim için harika çalışıyor. Ayrıca VS'de Ayarlar iletişim kutusu üzerinden başka bir ayar eklemeyi denedim ve app.config olmasa da iyi bir şekilde güncellendi. BTW [dlladı] proje klasörüne ve değişime bu konuda özellikleri "kopya hep" böyle de .dll.config ile hardlink dosyası oluşturmak için benzer bir şey yapmak için 3.

bir başka yolu VS2013 güncelleştirme edilir kullanma hala app.config uygulamasına normal olarak sahip olursunuz, ancak güncellediyseniz, [dllname] .dll.config dosyanızı da günceller. Buradaki tek gerçek uyarı, TFS gibi kaynak kontrolünü kontrol ettiğinizde ve bağlantının üzerine yanlışlıkla yazabilirsiniz. Ama yine de bir "bağlantı eklediğinizde ve var olan öğeyi" bir bağlantı olarak bağlarsanız, bu durum sizin durumunuz için işe yarayabilir ya da çalışmayabilir. Sen karar ver.

1

Geç kalmamıza rağmen, cevabım başkalarına yardımcı olabilir. Ben önceden inşa olay olarak aşağıdaki komutu kullanılır: Ben mümkün olduğunca dinamik olmaya çalıştı

copy /Y $(SolutionDir)\[YOUR_LIBRARY_PROJECT]\app.config $(ProjectDir)$(OutputPath)[YOUR_LIBRARY_NAME].dll.config

ve yukarıdaki komut çalıştı.

2

Orada şu sonrası daha iyi bir cevaptır:

Visual Studio/MSBuild copy referenced class library's app.config as *.dll.config to bin folder of current project

// Add this <ItemGroup> at the end of your .csproj file before </Project> and after <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
<ItemGroup> 
    <Content Include="app.config"> 
     <Link>$(TargetName).dll.config</Link> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
    </Content> 
</ItemGroup> 
+1

Bunu denemedim, ancak dosyayı yavaş cheetah ile dağıtmak istediğinizde sorun olabileceği görülüyor. – emragins

İlgili konular