2013-05-16 41 views
53

Tôi đang sử dụng VS2010 và tôi đã cố gắng thêm một vài cụm từ đĩa cứng cục bộ vào dự án C# của tôi thông qua tham chiếu tệp. Nhìn trộm vào file csproj, tôi thấy đôi khi các tài liệu tham khảo tập tin xuất hiện nhưTìm hiểu về tham chiếu assembly csproj

<Reference Include="name"> 

Tuy nhiên đôi khi nó xuất hiện như

<Reference Include="name, Version=xxx, Culture=neutral, 
              processorArchitecture=MSIL"> 

gì có thể gây ra sự khác biệt?


Lấy cảm hứng từ câu trả lời của k3b, tôi đã làm một thử nghiệm khác. Tôi đã tạo một dự án thư viện lớp mới.

  1. Thêm tham chiếu tệp. Giá trị ban đầu của Phiên bản cụ thể trong Thuộc tính ngăn là False. Các csproj tập tin trông giống như

    <Reference Include="Name"> 
        <HintPath>...</HintPath> 
    </Reference> 
    
  2. Thay đổi Version cụ trong Thuộc tính pane để Đúng. VS thêm phiên bản trong thuộc tính Include.

    <Reference Include="Name, Version=..."> 
        <HintPath>...</HintPath> 
    </Reference> 
    
  3. Thay đổi Version cụ trong Thuộc tính pane để False một lần nữa. VS thêm phần tử con SpecificVersion.

    <Reference Include="Name, Version=..."> 
        <HintPath>...</HintPath> 
        <SpecificVersion>False</SpecificVersion> 
    </Reference> 
    

Vì vậy, có vẻ như rằng các quy tắc là:

  • Khi Version hiện diện trong Bao gồm thuộc tính và không có yếu tố SpecificVersion đứa trẻ, lắp ráp tập tin được cấu hình để được Phiên bản Cụ thể
  • Các SpecificVersion phần tử con chỉ được nối với giá trị Sai.

Một điều tôi vẫn không hiểu:

  • Đối với dự án thử nghiệm mới của tôi, nếu tôi loại bỏ các tài liệu tham khảo tập tin và thêm nó trở lại một lần nữa, nó đi ngược về định dạng tại điểm 1, đó là mặc định.
  • Đối với dự án hiện tại của tôi, nếu tôi xóa tham chiếu tệp và thêm lại tham chiếu, tôi lấy lại định dạng ở điểm 3. Mặc dù điều đó cũng có nghĩa là Phiên bản cụ thể không được sử dụng, tôi tự hỏi tại sao nó không quay lại định dạng tại điểm 1.

Trả lời

26

Loại tham chiếu nào bạn nhận được tùy thuộc vào cách bạn liên kết lắp ráp.

  • chọn lắp ráp tham chiếu trong dự án thám hiểm
  • đi đến các thuộc tính trang

có bạn tìm thấy một lá cờ boolean "Phiên bản đặc biệt"

  • phương tiện đúng: assembly phải có phiên bản = xxx
  • phương tiện giả: bỏ qua phiên bản lắp ráp

(tôi chỉ có một Đức-VS2010 nên bản dịch tiếng Anh cho Đức "Spezifische Version" có thể hơi khác nhau)

[cập nhật]

Tôi đã thử các sau đây sử dụng vcs2010-express Đức

thêm tài liệu tham khảo với SpecificVersion mặc định = False: không có phiên bản

<Reference Include="Castle.Core"> 
    <HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath> 
</Reference> 

r sửa đổi eference: SpecificVersion = True: phiên bản bổ sung

<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL"> 
    <HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath> 
</Reference> 

sửa đổi tài liệu tham khảo một lần nữa: SpecificVersion = False: phiên bản vẫn còn và SpecificVersion yếu tố mới

<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL"> 
    <HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
</Reference> 

Dường như phiên bản cụ thể được nhớ đến nhưng ignorede bởi vì <SpecificVersion>False</SpecificVersion>

+1

bạn có chắc không? trong VS2010 của tôi, 'SpecificVersion' là một phần tử con của phần tử' Reference'. Không có tác động đến '' khác mà các thuộc tính bị bỏ qua. –

+1

Tôi đã làm một thử nghiệm. Phiên bản cụ thể ban đầu là Sai. Sau đó, tôi đã chỉnh sửa tệp csproj theo cách thủ công để xóa thông tin phiên bản. Và sau đó tôi đã thay đổi phiên bản cụ thể thành True. Tôi quan sát thấy rằng VS chèn thông tin phiên bản. Vì vậy, có vẻ như nó là bằng cách nào đó liên quan đến phiên bản cụ thể. Tuy nhiên, tôi tự hỏi tại sao VS không nhớ sự thay đổi cuối cùng của tôi. Ngay cả khi tôi đặt lại Phiên bản cụ thể thành False và xóa và thêm lại tham chiếu assembly, thông tin phiên bản vẫn được chèn vào. – intangible02

+1

Tôi xác nhận các quan sát của bạn. Đã cập nhật câu trả lời cho phù hợp. – k3b

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