2012-06-06 27 views

Trả lời

3

Điều này thực sự có thể bây giờ (và có thể là tại thời điểm câu hỏi này được hỏi). Chỉ cần tạo tệp LoadConfig.csx với các thông tin sau:

#r "System.Configuration" 

using System; 
using System.IO; 
using System.Linq; 


var paths = new[] { Path.Combine(Environment.CurrentDirectory, "Web.config"), Path.Combine(Environment.CurrentDirectory, "App.config") }; 
var configPath = paths.FirstOrDefault(p => File.Exists(p)); 

if (configPath != null) 
{ 
    // Set new configuration path 
    AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configPath); 

    // Reset current configuration load state 
    var t = typeof(System.Configuration.ConfigurationManager); 
    var f = t.GetField("s_initState", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); 
    f.SetValue(null, 0); 
} 

Lưu tệp ở nơi bạn sẽ nhớ và quay lại dự án bạn muốn tải trong studio trực quan. Nhấp chuột phải vào dự án và chọn "Reset C# Interactive from Project". Khi cửa sổ tương tác C# đã tải xong cuộc gọi:

#load "C:\path\to\LoadConfig.csx" 

LƯU Ý: Bạn phải gọi ngay lập tức sau khi tải dự án. Nếu bất kỳ tra cứu cấu hình nào xảy ra trước khi bạn tải tập lệnh này thì tập lệnh này sẽ không hoạt động.

Giờ cửa sổ tương tác C# sẽ có quyền truy cập vào cài đặt dự án của bạn.

+1

Chỉ cần tò mò nếu điều này là làm việc cho bất cứ ai khác? Dường như không làm việc cho tôi. Đây là một bi kịch, vì nó ám tất cả các hội đồng có được, ví dụ, kết nối thông tin chuỗi từ một tập tin cấu hình như không thể thực hiện được từ cửa sổ tương tác C#. Đây có thể là một công cụ hữu ích, và hiện tại, nó gần như vô dụng đối với tôi. – esmoore68

+0

Không hoạt động cho tôi. Tôi đang sử dụng Visual Studio 2017 – Jalal

4

Không có cách nào để thực hiện việc này ngay bây giờ, mặc dù đó là điều chúng tôi đang nghĩ đến trong tương lai.

Trong thời gian chờ đợi, bạn có thể đưa mã của bạn lấy chuỗi kết nối làm tham số và chỉ chuyển nó vào phương thức trong Cửa sổ tương tác không?

+1

Cảm ơn Kevin, đó là những gì tôi đã làm. Tôi hy vọng .config chức năng làm cho nó vào một phiên bản tương lai của REPL khi tôi đi qua một chút công bằng của mã có phụ thuộc vào một tập tin cấu hình. BTW - Tôi là một fan hâm mộ lớn của những gì bạn đang làm với Roslyn, nó đá! – Stuart

+1

Một điều tôi muốn thêm: Có điều gì đó giống như ngôn ngữ kịch bản lệnh C# có thể thay thế những thứ như tệp .config và có thể được áp dụng cho việc tiêm phụ thuộc nói chung. Hãy tưởng tượng tập tin kịch bản đang được triển khai với nhị phân, và khi khởi động nó có thể thực thi kịch bản và tải bất cứ thứ gì nó trả về vào một ConfigurationManager hoặc bất cứ thứ gì khác. Dependency injection sẽ hoạt động tương tự, chỉ cần gọi script để giải quyết những gì constructor/properties cần được gọi để khởi tạo một đối tượng cụ thể. Vì vậy, về cơ bản, 1 triệu phiếu bầu cho có .config trong Roslyn (đó là một bước đi đúng hướng). – gzak

1

Câu trả lời đã được chấp nhận không phù hợp với tôi; dựa trên các nhận xét cho câu trả lời được chấp nhận, nó cũng không hoạt động cho 2 người khác. Giải pháp dưới đây làm việc cho tôi.

  1. Cập nhật tập tin cấu hình của c (REPL) # tương tác được đặt tại

    AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

  2. Tái khởi REPL.

Các vấn đề liên quan