2016-07-04 36 views
7

Üç yapılandırma dosyaları, her ortam için sahipsinizdir: -> üretim appsettings.dev.json'un çıktı klasörüne kopyalanmasını nasıl sağlayabilirim?

  • appsettings.dev.json -

    1. appsettings.json> geliştirme
    2. appsettings.stg.json -> evreleme
    Ben dev için ASPNETCORE_ENVIRONMENTayarlarsanız

    , bir çalışma zamanı istisnası appsettings.dev.json bulmak mümkün değil varlık hakkında şikayetçi olsun. Ben project.json içinde buildOptions bölüme

    "copyToOutput": [ 
        "appsettings.dev.json" 
    ] 
    

    ekleyerek çalıştı ama herhangi bir etkiye sahip görünmemektedir.

    appsettings.dev.json'un çıkış dizinine kopyalanmasını zorlaştırabilir miyim?

  • +0

    Ivan'dan bir cevabınız var. Belki bunun sizin için işe yarayıp yaramadığını göstermek iyi bir fikir olabilir mi? –

    +1

    Ortam başına belirli bir dosyayı dağıtmak için bir çözüm bulamadım. Tüm proje dağıtmak için yapılandırabilirsiniz * .json dosyaları -http: //stackoverflow.com/questions/37858312/dotnet-publish-doesn%C2%B4t-publish-correct-appsettings-env-environmentname-json Ancak iyi bir seçenek değil, mükemmel senaryo, ortam başına 1 - 1 dosyası (yapılandırma adı) - kefil açıkken :) –

    cevap

    6

    appsettings.dev.json'un yerleştirildiği temel yolu ayarladınız mı? "Project.json" bu dahil

    var builder = new ConfigurationBuilder() 
        .SetBasePath(env.ContentRootPath) 
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); 
    
    +1

    Bu, istisnanın atılmasını engelleyecektir, ancak nasıl yapılacağına dair .dev.json' dosyası kopyalandı. –

    +0

    ..Ve .vscode/launch.json -> "cwd" yolunu kontrol edin. Bunu "$ {workspaceRoot}" ile "$ {workspaceRoot} \ src \ myproject" arasında ayarlamak benim için çalıştı. – Vladislav

    7

    benim için çalışıyor: Diğer Devs kurmak zorunda geçmişte hizmetler için Tipik

    :

    ... 
    "publishOptions": { 
        "include": [ 
        "wwwroot", 
        ... 
        "appsettings.json", 
        "appsettings.Development.json", 
        ... 
        ] 
    }, 
    ... 
    
    +0

    Benim için çalışmadı. Bir keresinde çalıştı, projenin sebebi değişti ve projenin yeniden inşasına neden oldu. Tek çözüm çalışması - yapı yerine yeniden yapılandırmayı çağırın. Hem derleme seçenekleri hem de yayımlama seçenekleri ile çalışır. – VorobeY1326

    2

    Visual Studio kullanıyorsanız varsayar Projede belirli şeylerin yapılmasını sağlayan 'Olaylar Oluştur'. Örnek olarak Visual Studio 2015 için ASP.NET proje özelliklerinde örnek olarak yer alır:> 'Build Events' (sol bölme)> 'Post-build'i düzenle' seçeneğini tıklayın. Projenin çıktı olarak nasıl üretilmesi gerektiğine ilişkin komut satırı talimatlarını yazın. EG:

    mkdir "$(ProjectDir)bin\Setup" 
    

    'Kur'

    Del "$(ProjectDir)bin\Setup\*.* /Q" 
    

    denilen bin altında bir dizin oluşturmak

    copy "$(TargetDir)*.dll" "$(ProjectDir)bin\Setup" 
    

    kopyalar dll inşa konumdan yeni kurulum için yeni oluşturulan çöpe herhangi varolan öğeleri siler konum

    Artık "Configuration Manager" cihazınızın yapıldığı bir oluşturma işlemi yapıyorsanız g her bir ortam için farklı bir çıktı ve her seferinde her zaman bir seviyeyi geçmek, o kutuları 'dev' veya 'stg' adıyla bulmak ve sonra bunları geri kopyalamak isteyeceksiniz. VS'nin JSON verilerinizle eşleşen ortam için bildiği bir değişkeni oluşturabilir veya listeleyebilirsiniz.

    İlgili konular