Visual Studio: Đường dẫn tham chiếu lắp ráp tương đối


96

Khi thêm tham chiếu vào một assembly nằm trong thư mục giải pháp, có cách nào để thêm nó một cách tương đối, để khi đăng nhập và đăng xuất khỏi kho lưu trữ, nó được tham chiếu trong các dự án một cách chính xác không?


13
Nếu nó không hoàn toàn hoạt động từ giao diện người dùng, hãy nhớ rằng bạn chỉ có thể chỉnh sửa trực tiếp tệp .proj bằng tay và thay đổi đường dẫn thành tương đối. Một khi bạn thay đổi nó theo cách nào đó, nó vẫn như cách bạn đã đặt.
Pavel Minaev 31-07-09

1
Trong Visual Studio 2010, đường dẫn tham chiếu được lưu trữ dưới dạng tương đối theo mặc định, vì vậy nếu điều này xảy ra với bạn thì có điều gì đó không ổn. Trong trường hợp của tôi, đó là tôi đã bỏ qua các dlls từ kiểm soát phiên bản để tôi có thể biên dịch giải pháp nhưng các đồng nghiệp của tôi không thể.
Giles Roberts

Câu trả lời:


124

Để mở rộng dựa trên nhận xét ban đầu của Pavel Minaev - GUI cho Visual Studio hỗ trợ các tham chiếu tương đối với giả định rằng .sln của bạn là gốc của tham chiếu tương đối. Vì vậy, nếu bạn có một giải pháp C:\myProj\myProj.sln, bất kỳ tham chiếu nào bạn thêm vào các thư mục con C:\myProj\sẽ tự động được thêm vào dưới dạng tham chiếu tương đối.

Để thêm một tham chiếu tương đối trong một thư mục riêng biệt, chẳng hạn như C:/myReferences/myDLL.dll, hãy làm như sau:

  1. Thêm tham chiếu trong Visual Studio GUI bằng cách nhấp chuột phải vào dự án trong Solution Explorer và chọn Thêm tham chiếu ...
  2. Tìm * .csproj nơi tham chiếu này tồn tại và mở nó trong trình soạn thảo văn bản
  3. Chỉnh sửa <HintPath> để bằng

    <HintPath>..\..\myReferences\myDLL.dll</HintPath>

Điều này bây giờ tham khảo C:\myReferences\myDLL.dll.

Hi vọng điêu nay co ich.


20
Tôi hiểu rằng điều này là hữu ích và chính xác, nhưng có phải VS gui nghiêm túc không cung cấp cách để thêm tham chiếu tương đối không?
kdbanman

4
Trong VS 2015 tôi có hành vi này theo mặc định (đường dẫn tương đối)
Mugen

2
Tôi tin chắc rằng nó đã thêm một con đường tuyệt đối, cho đến khi tôi làm theo chỉ dẫn của bạn vì tò mò. VS đã hiển thị một đường dẫn tuyệt đối trong các thuộc tính tham chiếu, nhưng <HintPath> đã hiển thị là đã tương đối. Hóa ra tôi đã thiếu tệp O_o lolimaderp!
donutguy640

@ donutguy640 Điều đó làm tôi bối rối quá. Họ cũng sẽ hiển thị đường dẫn tương đối trên ngăn thuộc tính
Alexander Derck

1
Bạn không phải trực tiếp chỉnh sửa tệp dự án. Chọn "duyệt" trong hộp thoại thêm tham chiếu, điều hướng đến thư mục có tệp dự án của bạn, sau đó thêm đường dẫn tương đối vào DLL của bạn. Mặc dù một đường dẫn tuyệt đối được hiển thị trong cửa sổ thuộc tính, đường dẫn tương đối được lưu vào tệp dự án. VS thực sự sẽ hiển thị đường dẫn giống như nó được lưu trong tệp dự án.
needfulthing

9

Có, chỉ cần tạo một thư mục trong giải pháp của bạn như lib /, sau đó thêm dll của bạn vào thư mục đó trong hệ thống tệp và thêm nó vào dự án (Thêm-> Mục hiện có-> v.v.). Sau đó, thêm tài liệu tham khảo dựa trên dự án của bạn.

Tôi đã làm điều này vài lần dưới svn và dưới cvs.


5
Bạn không cần thêm dll vào chính dự án, chỉ cần thêm tham chiếu vào nó. Điều tốt nhất cần làm là thêm toàn bộ thư mục 'lib' vào kiểm soát nguồn của bạn. Xem code.google.com/p/projectpilot/source/browse/#svn/trunk làm ví dụ
Igor Brejc,

1
Bạn đúng rồi. Tôi đã kiểm tra một dự án cũ và cả thư mục hay các tập tin đều không được thêm vào chính dự án, chỉ vào kho lưu trữ. Và tham chiếu sau đó là tương đối với dự án. Xin lỗi vì điều đó.
Freddy,

3

Trong VS 2017, nó là tự động. Vì vậy chỉ cầnAdd Reference như thường lệ.

Lưu ý rằng trong Reference Propertiesđường dẫn tuyệt đối được hiển thị, nhưng trong .vbproj/.csprojtương đối được sử dụng.

<Reference Include="NETnetworkmanager">
      <HintPath>..\..\libs\NETnetworkmanager.dll</HintPath>
      <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>

2

Có thể, cách dễ nhất để đạt được điều này là chỉ cần thêm tham chiếu vào hợp ngữ và sau đó (thủ công) vá biểu diễn văn bản của tham chiếu trong tệp dự án Visual Studio tương ứng (phần mở rộng .csproj) sao cho nó trở nên tương đối.

Tôi đã làm điều này nhiều lần trong VS 2005 mà không gặp bất kỳ vấn đề gì.


3
Tôi nghĩ rằng không cần thiết phải sửa đổi tệp dự án theo cách thủ công. Theo kinh nghiệm của tôi Visual Studio luôn sử dụng các bước đệm tương đối. Lần duy nhất tôi phải sửa đổi tệp dự án bằng tay là khi tôi muốn chia sẻ tệp khóa (.snk). Visual Studio luôn chỉ sao chép tệp khóa vào thư mục dự án, dẫn đến một số bản sao của tệp khóa.
Stefan Egli, 31-07-09

1

Tôi có thể dừng lại ở đây, nhưng có vẻ như câu trả lời là khá rõ ràng: Nhìn vào các đường dẫn tham chiếu trong các thuộc tính của dự án. Trong thiết lập của chúng tôi, tôi đã thêm thư mục kho lưu trữ chung của chúng tôi, vào cửa sổ GUI đường dẫn tham chiếu, giống như vậy

Đường dẫn tham chiếu trong VS20xx

Bằng cách đó, tôi có thể sao chép dlls của mình (đã sẵn sàng để xuất bản) vào thư mục này và mọi nhà phát triển hiện nhận được DLL cập nhật mỗi khi nó được xây dựng từ thư mục này.

Nếu dll được tìm thấy trong Giải pháp, người xây dựng nên ưu tiên phiên bản cục bộ hơn phiên bản nhóm đã xuất bản.


Thật không may, điều này được giữ trong tệp csproj.user và không phải là tương đối.
Jamie Kitson

0

Như đã đề cập trước đây, bạn có thể chỉnh sửa thủ công .csprojtệp dự án của mình để áp dụng nó theo cách thủ công.

Tôi cũng nhận thấy rằng Visual Studio 2013 cố gắng áp dụng một đường dẫn tương đối đến tham chiếu gợi ý, có thể là do nỗ lực làm cho tệp dự án dễ di động hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.