2008-09-19 26 views
38

Trên dự án thư viện lớp, tôi đặt "Hành động Bắt đầu" trên tab Gỡ lỗi của thuộc tính dự án thành "Bắt đầu chương trình bên ngoài" (NUnit trong trường hợp này). Tôi muốn thiết lập một biến môi trường trong môi trường chương trình này được bắt đầu. Làm thế nào để làm điều đó? (Thậm chí là nó có thể?)Làm cách nào để đặt các biến môi trường cụ thể khi gỡ lỗi trong Visual Studio?

EDIT:

Đây là một biến môi trường mà ảnh hưởng đến tất cả các ứng dụng .NET (COMplus_Version, nó đặt phiên bản runtime) để thiết lập nó hệ thống rộng thực sự không phải là một lựa chọn.

Như một giải pháp khác, tôi buộc NUnit phải khởi động đúng phiên bản .NET (2.0) bằng cách đặt nó trong nunit.exe.config, mặc dù không may điều này cũng có nghĩa là tất cả các thử nghiệm đơn vị .NET 1.1 của tôi hiện cũng chạy trong .NET 2.0. Có lẽ tôi chỉ cần tạo một bản sao của tệp thực thi để có thể có tệp cấu hình riêng của mình ...

(Tôi đang giữ câu hỏi đang mở (không chấp nhận câu trả lời) trong trường hợp ai đó xảy ra để tìm hiểu cách thức (có thể cũng hữu ích cho các mục đích khác sau khi tất cả ...))

+0

Bạn có muốn biến môi trường đặc biệt cho chương trình này không chỉ là? –

Trả lời

59

Trong hình ảnh   Studio   2008 và Visual   2005 và ít nhất là bạn có thể chỉ định thay đổi đối với biến môi trường trong cài đặt dự án.

Mở dự án của bạn. Đi đến Project -> Properties ... Trong Configuration Properties -> Debugging, chỉnh sửa giá trị 'Environment' để thiết lập các biến môi trường.

Ví dụ: nếu bạn muốn thêm thư mục "c: \ foo \ bin" vào đường dẫn khi gỡ lỗi ứng dụng của mình, hãy đặt giá trị 'Môi trường' thành "PATH =% PATH%; c: \ foo \ bin ".

Here's a screenshot of the settings dialog

+0

Tôi đang sử dụng VS2008 và thuộc tính dự án của tôi không có "Thuộc tính cấu hình" hoặc "Gỡ lỗi" trên đó. Tôi không thể tìm thấy bất cứ điều gì về biến môi trường bất cứ nơi nào trong thuộc tính dự án. Tôi đang làm gì sai? –

+0

Tôi sẽ chỉnh sửa bài đăng này với ảnh chụp màn hình về nơi cài đặt. –

+0

Xin chào, bạn đã truy cập màn hình này như thế nào? Trong tài sản dự án VS2008 và VS2005 của tôi có vẻ khác, và chúng không có cài đặt môi trường – Grzenio

0

Thiết lập tệp lô mà bạn có thể gọi. Vượt qua đường dẫn tệp lô và có tệp lô đặt biến môi trường và sau đó gọi NUnit.

+4

Visual Studio từ chối chấp nhận bất cứ điều gì nhưng thực thi (.exe) trong đường dẫn cho chương trình bắt đầu. – Tobi

1

Nếu bạn không thể sử dụng các tệp dơi để thiết lập môi trường, thì tùy chọn duy nhất của bạn là thiết lập biến môi trường rộng của hệ thống. Bạn có thể tìm thấy những bằng cách làm

  1. Nhấp chuột phải vào "My Computer"
  2. Chọn thuộc tính
  3. Chọn "tiên tiến" tab
  4. Nhấp vào "biến môi trường" nút
  5. Trong "biến hệ thống ", hãy thêm biến môi trường mới mà bạn muốn
  6. " Ok "tất cả các cách để chấp nhận các thay đổi của bạn

Tôi không biết liệu bạn có phải khởi động lại studio trực quan hay không, nhưng có vẻ như không chắc. HTH

+0

Đánh dấu, tôi tin rằng yêu cầu là môi trường mà chương trình đã được bắt đầu, chứ không phải môi trường người dùng hoặc hệ thống. –

+0

Vâng, đó là một biến môi trường ảnh hưởng đến tất cả các ứng dụng .NET (COMplus_Version, nó đặt phiên bản thời gian chạy) để thiết lập hệ thống rộng thực sự không phải là một tùy chọn. – Tobi

+0

Yup - bỏ lỡ điều đó. Lấy làm tiếc. – Mark

0

Như môi trường được thừa hưởng từ quá trình cha mẹ, bạn có thể viết một add-in cho Visual Studio mà sửa đổi biến môi trường của nó trước khi bạn thực hiện khi bắt đầu. Tôi không chắc chắn sẽ dễ dàng như thế nào để đưa vào quá trình của bạn.

4

Visual Studio 2003 dường như không cho phép bạn đặt biến môi trường để gỡ lỗi.

Điều tôi làm trong C/C++ là sử dụng _putenv() trong main() và đặt bất kỳ biến nào. Thông thường tôi bao quanh nó với một #if defined DEBUG_MODE/#endif để đảm bảo chỉ một số bản dựng có nó.

_putenv("MYANSWER=42"); 

Tôi tin rằng bạn có thể làm điều tương tự với C# sử dụng os.putenv(), ví dụ:

os.putenv('MYANSWER', '42'); 

Những điều này sẽ đặt biến envrironment cho duy nhất mà quá trình vỏ, và như vậy là một phù du thiết lập, đó là những gì bạn đang tìm kiếm.

Bằng cách này, nó tốt để sử dụng trình thám hiểm quá trình (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx), mà là một công cụ sysinternals. Bạn có thể thấy những gì một quá trình nhất định 'bản sao của các biến môi trường là, vì vậy bạn có thể xác nhận rằng những gì bạn đặt là những gì bạn có.

1

Bắt đầu với NUnit 2.5 bạn có thể sử dụng/chuyển đổi khuôn khổ ví dụ .:

nunit-console myassembly.dll /framework:net-1.1 

Đây là từ NUnit's help pages.

2

Trong Visual Studio cho Mac và C# bạn có thể sử dụng:

Environment.SetEnvironmentVariable("<Variable_name>", "<Value>");

Nhưng bạn sẽ cần không gian tên sau

using System.Collections; 

bạn có thể kiểm tra danh sách đầy đủ của các biến với điều này:

foreach (DictionaryEntry de in Environment.GetEnvironmentVariables()) 
      Console.WriteLine(" {0} = {1}", de.Key, de.Value); 
+0

OMG, tôi đã tìm kiếm trong nửa giờ qua để tìm thấy cuộc gọi đơn giản Environment.SetEnvironmentVariable(). Cảm ơn! – Alan

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