2010-01-27 48 views
24

Tôi đang làm việc trên một số dự án C# với Visual Studio 2005 và tôi đang cố gắng thay đổi mục tiêu nền tảng từ x86 thành CPU bất kỳ. Tôi đã đi qua tất cả các phụ thuộc mà tôi biết và đảm bảo rằng chúng cũng được xây dựng cho bất kỳ CPU nào bằng cách sử dụng công cụ corflags.Thay đổi dự án Visual Studio C# từ x86 thành CPU bất kỳ

Khi tôi thay đổi mục tiêu nền tảng trong Visual Studio 2005, có vẻ như nó sẽ lưu thay đổi, nhưng khi tôi tạo dự án, nó vẫn sử dụng x86. Lần sau tôi mở dự án, mục tiêu nền tảng đã được đặt lại thành x86.

Điều này chỉ xảy ra đối với một vài dự án trong giải pháp, điều này có nghĩa là có các phụ thuộc 32 bit khác ở đâu đó không?

Tôi có thể chạy trình biên dịch C# theo cách thủ công trên dòng lệnh với /platform:anycpu và tôi không gặp lỗi, nhưng tôi không chắc đó là điều phải làm và tôi muốn có thể xây dựng bên trong Visual Studio.

Tôi có thể làm gì để giải quyết vấn đề này?

+2

Bạn có chắc chắn rằng bạn đã thay đổi mục tiêu nền tảng trong tất cả các cấu hình (tức là cả trong cấu hình Gỡ lỗi và Phát hành)? –

+2

Tôi không nghĩ VS quan tâm đến sự phụ thuộc. Tôi đã có thể xây dựng các dự án AnyCPU có phụ thuộc 32 bit - sự cố đó nhanh chóng (và thích hợp) khi các tệp DLL cố tải. Đi với đề nghị của divo. –

+0

Tôi đã thay đổi mục tiêu nền tảng trong tất cả các cấu hình và nó vẫn chạy trình biên dịch với/platform: x86 và không lưu thay đổi trong dự án. – WildCrustacean

Trả lời

21

Hãy chắc chắn rằng bạn đã thay đổi cả nền tảng Cấu hìnhNền Đích-Any CPU. Nếu thất bại, bạn có thể mở .csproj và thay đổi các tham chiếu theo cách thủ công. Nhấp chuột phải vào Project, goto Unload Project. Sau đó nhấp chuột phải và goto Edit MyProject.csproj. Các thuộc tính cho dự án vẫn có thể bao gồm Nền tảng mặc định là x86:

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform> 

Đồng thời xem xét trường hợp Giải pháp vẫn có cấu hình x86 trong Trình quản lý cấu hình. Tôi đã tìm thấy một số giải pháp phức tạp với nhiều dự án có cấu hình khác nhau mà tôi phải dành nhiều thời gian trong Trình quản lý cấu hình để nhận mọi thứ liên tục.

+0

Tôi đã thay đổi cả Nền tảng Cấu hình và Mục tiêu Nền tảng, và nó vẫn không lưu thay đổi. Tôi đã có thể chỉnh sửa các tập tin .csproj và làm theo cách đó, vì vậy tôi nghĩ rằng đây là những gì tôi đang tìm kiếm vào thời điểm này. Có hay không nó thực sự chạy là một câu chuyện khác. Tôi vẫn có cảm giác rằng điều này có thể liên quan đến các phụ thuộc mà tôi không thể thấy được nhắm mục tiêu cho các nền tảng khác, nhưng thật khó để nói. – WildCrustacean

+0

Đến đây cố gắng giải quyết cùng một vấn đề ... Cuối cùng tôi phát hiện ra rằng ngay cả khi một dự án được thiết lập để gỡ lỗi, ví dụ, Debug/Any CPU trong cấu hình giải pháp cho Debug/Any CPU, trang thuộc tính của dự án, 'build 'tab, cho phép bạn chọn một nền tảng đích cho' Gỡ lỗi/CPU bất kỳ '. Trong trường hợp của tôi, 'Debug/Any CPU' nhắm mục tiêu x86 một cách rõ ràng, và vì vậy khi tôi biên dịch dự án cho Debug/Any CPU, DLL kết quả được biên dịch rõ ràng cho x86 ... gây ra lỗi Định dạng không hợp lệ khi được tải trong môi trường x64. Và có nhiều 'wtf?' để có được. –

+1

Chỉ cần làm rõ, tôi không nói về cài đặt Trình quản lý cấu hình ... có hai nơi có khả năng xác định sai cấu hình. Trình quản lý giải pháp cho phép bạn đặt dự án thành 'Release/x64' cho cấu hình 'Debug/Any CPU' ... tab xây dựng thuộc tính của dự án cho phép bạn nói 'Release/x64' nhắm mục tiêu nền tảng x86. Bối rối chưa? –

-6

Bạn sẽ không thể thực hiện việc này cho một dự án được quản lý và tôi nghĩ rằng cài đặt đó không liên quan đến các dự án được quản lý vì chúng sẽ chạy trên bất kỳ CPU nào thực sự.

+0

Bạn có ý nghĩa gì bởi "dự án được quản lý"? Từ những gì tôi hiểu tôi sẽ có thể xây dựng hội đồng của tôi như là x86, x64, hoặc anycpu, bằng cách thay đổi thiết lập mục tiêu nền tảng trong các thuộc tính xây dựng. – WildCrustacean

+6

-1, cài đặt có liên quan cho các dự án được quản lý nếu chúng sử dụng các tệp DLL không được quản lý. – user7116

+0

Tôi không nghĩ đến x86 hoặc x64 Tôi chỉ nghĩ mã thuần túy được quản lý – gyurisc

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