2013-07-31 25 views
12

Chúng tôi đang gặp vấn đề này, chúng tôi có một số giải pháp và một/Thành phần/thư mục liền kề. Tất cả các tệp DLL mà chúng tôi muốn tham chiếu đều nằm trong thư mục này. Một số người trong số chúng tôi đã xây dựng từ nguồn để sử dụng một số phiên bản cụ thể chỉ tồn tại trong thành phần nhị phân nhưng khi người dùng trên máy khác nhận mới nhất của mọi thứ từ TFS và do đó có chính xác trên cấu trúc đĩa Visual Studio STILL thay đổi tài liệu tham khảo cho những người được cài đặt trong Program Files, GAC hoặc ở nơi khác.Visual Studio 2010 - cách buộc tham chiếu dự án để sử dụng đường dẫn chính xác KHÔNG GAC hoặc Tệp chương trình?

Đã thử chỉnh sửa thủ công tệp proj để bao gồm HintPath, ví dụ:

<Reference Include="Foo, Version=5.5.5.5, Culture=neutral, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\Components\Foo.dll</HintPath> 
</Reference> 

không có kết quả. Làm thế nào để chúng tôi FORCE visual studio tôn trọng con đường này?

+0

Bạn có chắc là bạn không có 'ReferencePath' được chỉ định trong tệp .user/targets không? Nó được ưu tiên hơn HintPath. Xem thêm tại http://stackoverflow.com/a/2733113/105350. Ngoài ra, những gì bạn có nghĩa là "không có avail"? VS loại bỏ 'HintPath' khỏi tập tin hoặc cái gì? – andreister

Trả lời

1

Chúng tôi có cùng một thiết lập - chúng tôi tham khảo các hội đồng bên thứ 3 (và một số của riêng chúng tôi) trong một thư mục riêng biệt và gợi ý trong tệp .csproj hoạt động tốt cho chúng tôi.

Visual Studio trước tiên sẽ cố gắng tìm dll trong HintPath và chỉ khi nó không tìm thấy nó, sau đó nó trông xa hơn - các tệp nhị phân bên cạnh hội đồng thực thi, thư mục giải pháp hoặc GAC. Ngoài ra, hãy nhớ rằng tab Reference Paths trong thuộc tính dự án được xử lý giống như cách HintPath và thứ tự thư mục được liệt kê có ý nghĩa quan trọng.

Nếu điều này vẫn còn làm phiền bạn, có lẽ bạn nên suy nghĩ về việc nâng cấp máy chủ NuGet cục bộ của mình (mà không được cho là phức tạp), từ đó các hội đồng sẽ tự động được thu thập khi tải giải pháp. Đó là một chút của một overkill, nhưng nó cũng xử lý các vấn đề với nhiều phiên bản của dll đang được sử dụng trên các giải pháp khác nhau. Chúng tôi vẫn chưa làm điều này vì vậy tôi không thể giới thiệu nó trực tiếp, nhưng nó nằm trong danh sách việc cần làm của chúng tôi.

5

Đặt "SpecificVersion" thành true, ngoài việc chỉ định "hintPath" có vẻ như một giải pháp vì nó "ngăn studio trực quan sử dụng nhiều quy tắc đích cho độ phân giải lắp ráp".

Tuy nhiên, một khi foo.dll không có sẵn (trong khi xây dựng hoặc tải dự án) Visual Studio ma thuật đá vào và thay đổi đường dẫn đích lắp ráp để lắp ráp 'phù hợp' gần nhất.

Sau thời điểm này, nó không quan trọng cho dù foo.dll gốc được khôi phục vị trí của nó (tại tên đường dẫn đích) hoặc thậm chí CHANGED! - Visual studio vẫn đề cập đến trận đấu mới được tìm thấy của nó. Điều này là rất không mong muốn.

giải pháp có thể:

  1. Mạnh Tên foo.dll, nhưng sau đó foo.dll chỉ có thể tham khảo lắp ráp tên mạnh khác (thường không mong muốn).

  2. Tùy chỉnh độ phân giải lắp ráp bằng cách đăng ký sự kiện trong ứng dụng gốc. Điều này cho phép bạn xác định chính xác nơi để tìm thấy hội đồng mục tiêu trong thời gian chạy - nhưng điều này có vẻ như nỗ lực quá nhiều để giải quyết vấn đề này đơn giản.

Công việc của tôi xung quanh cho vấn đề này (dễ dàng) là để thiết lập COPY ĐỊA PHƯƠNG FALSE, và thêm một bước bài xây dựng cho dự án, mà tự bản lắp ráp mục tiêu đến thư mục đích bin. Phần xấu về điều này là số lượng nhân bản (và tách) được tạo ra giữa bước sau xây dựng và cấu hình Tài liệu tham khảo của dự án.

Vui lòng Microsoft - thêm tùy chọn vào trang Thuộc tính tham chiếu sẽ ưu tiên gợi ý gợi ý (trên đường dẫn ma thuật bất ngờ ... hoặc ít nhất, hãy cảnh báo/lỗi nếu hai khác nhau!

+1

Thấy hành vi tương tự trong VS2015. Đây là hành vi rất kém đối với một hệ thống xây dựng trưởng thành như MSBuild. –

1

Đường dẫn đôi khi có thể hơi khó khăn. Visual Studio không thông minh như chúng tôi cần đôi khi và đó là lý do tại sao chúng tôi có thể chỉnh sửa tệp csproj trong XML. Cách thực hiện việc này là thực hiện như sau:

1.) Nhấp chuột phải vào dự án trong trình thám hiểm giải pháp và chọn "Hủy dự án". // Điều này sẽ làm cho dự án không hoạt động trong trình khám phá giải pháp.

2.) Nhấp chuột phải vào dự án một lần nữa, trong khi nó không hoạt động và chọn "Chỉnh sửa YourProject.ext" trong đó ext là vbproj hoặc csproj. Thao tác này sẽ mở một trình soạn thảo XML trong Visual studio. // Nếu bạn cần tìm kiếm trong tệp, bạn có thể nhấn Ctrl-F, nhưng hãy nhớ rằng bạn sẽ phải điều chỉnh "Tìm trong:" thành "Tài liệu hiện tại", nếu không nó sẽ không được tìm kiếm.

3.) Khi xem/chỉnh sửa đã được hoàn thành và thay đổi được lưu, bạn đóng tệp XML, bấm chuột phải vào dự án một lần nữa và chọn "Tải lại dự án".

tôi diễn giải các bước mà tôi tìm thấy từ đây: http://wiki.visualwebgui.com/pages/index.php/Visual_Studio_HintPath#Viewing_or_editing_the_project_file

Tôi hy vọng điều này sẽ giúp, nó đã giúp tôi.

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