2013-03-08 68 views
6

Khi tôi thêm tệp từ dự án Visual Studio 2012 khác vào dự án hiện tại của tôi bằng cách sử dụng tùy chọn 'Thêm dưới dạng liên kết' từ 'Thêm mục hiện có 'hộp thoại. Liên kết tệp được tạo độc đáo và mọi thứ đều ổn.Visual Studio 2012 - Cách thêm liên kết tệp vào một tệp trong cùng một dự án

Khi tôi lặp lại cùng một thủ thuật cho một tệp hiện có trong dự án cùng VS2012 (nhưng nằm trong thư mục khác) liên kết sẽ không được tạo. Visual Studio chỉ bỏ qua hành động. Tại sao điều này không thể? Có cách giải quyết nào cho điều này, vì vậy tôi có thể thêm liên kết tệp vào các tệp trong cùng một dự án không?

Thông tin cơ bản: Tôi muốn sử dụng gói NuGet và cơ chế cập nhật của nó, nhưng NuGet chỉ kết xuất mọi thứ trong cấu trúc thư mục (như thư mục 'Tập lệnh' và 'Nội dung') mà tôi không muốn sử dụng. Tôi sử dụng thư mục 'libs' cho nội dung bên ngoài. Nhưng khi tôi di chuyển tệp NuGet đã nhập, nó sẽ phá vỡ cơ chế cập nhật, vì vậy tôi muốn tạo liên kết tệp (bên dưới thư mục libs) cho các tệp được nhập nằm trong thư mục 'Tập lệnh', v.v.

Tôi đã cố gắng theo cách thủ công chỉnh sửa tệp .csproj, nhưng so với định nghĩa liên kết vẫn bị bỏ qua. Giải pháp duy nhất tôi có thể nghĩ đến là tạo một dự án khác chỉ cho các gói NuGet và thêm liên kết vào các tệp đã nhập trong dự án khác của tôi, nhưng điều đó dường như với tôi là một chút quá mức cần thiết.

Trả lời

3

Điều này là không thể.

Các tập tin csproj chỉ đơn giản là một tập tin msbuild, nói với quá trình xây dựng những tập tin và tài liệu tham khảo, tạo nên dự án và phải làm gì về xây dựng, vv

Nếu bạn nhìn vào cách các tập tin csproj được đặt cùng nhau, bạn sẽ nhận thấy rằng có các phần tử ItemGroup. Một trong các chức năng của các yếu tố ItemGroup này là nhóm các tệp lại với nhau. Trong "nhóm tệp", mỗi mục (cho dù được đánh dấu là Biên dịch hay Không hoặc bất kỳ điều gì) đều đề cập đến tệp có thuộc tính Bao gồm, ví dụ: Bao gồm = "filename.ext". Khi bạn thêm một tệp vào giải pháp, nó sẽ tạo một trong các phần tử này với thuộc tính Include được đặt thích hợp vào đường dẫn của tệp tương đối với dự án. Trước khi nó làm điều đó mặc dù, nó kiểm tra xem liệu một tập tin với đường dẫn phù hợp đã có trong dự án, và bỏ qua nó nếu nó được.

Vì vậy, bạn thấy, những gì bạn đang cố gắng làm là thêm tệp trùng lặp và VS không cho phép điều đó.

--Chỉnh sửa--

Bây giờ, với một công việc xung quanh. Nếu bạn đã sử dụng một liên kết tượng trưng, ​​điều này có thể được thực hiện. Trong cửa sổ lệnh, nhập lệnh sau:

mklink Link Target 

trong đó Liên kết chỉ định tên liên kết tượng trưng mới và Mục tiêu chỉ định liên kết mới liên quan đến.

Sau đó, bạn có thể thêm tệp vào dự án của mình theo yêu cầu.

+0

Một câu trả lời rõ ràng. Cảm ơn bạn. Tôi hy vọng, một ngày nào đó họ sẽ thêm một tính năng như vậy. Tương tự như symlink Linux hay gì đó. –

+0

Vâng, bây giờ bạn đề cập đến nó, các liên kết tượng trưng tồn tại trong các cửa sổ, vì vậy tôi sẽ đăng một câu trả lời với các chi tiết về cách đạt được điều này – CarllDev

+0

Trông đẹp. Bạn đã thử nghiệm nó @CarllDev? –

-1

Visual Studio không tương thích với các liên kết và liên kết mềm

2

Bạn có thể chỉnh sửa tệp .csproj. Ví dụ, thay thế

<Content Include="fonts\fontawesome-webfont.woff" /> 

bởi

<Content Include="fonts\fontawesome-webfont.woff" > 
    <Link>newPath\fonts\fontawesome-webfont.woff</Link> 
</Content> 

con đường mới sẽ được ẩn trong solution explorer, nhưng nó sẽ được sao chép (thử nghiệm trong VS2015 CTP6)

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