2010-10-01 47 views
6

Tôi gặp sự cố với Devart DLL không được sao chép vào thư mục bin của ứng dụng web của tôi. Tôi có dự án ứng dụng web tham chiếu projectA. Dự án tham chiếu ProjectAB. Dll Devart được sử dụng trong projectB và không được sao chép vào thư mục bin dự án ứng dụng web trong quá trình xây dựng. ProjectB cũng tham chiếu các tập tin EL Unity và chúng được sao chép chính xác. Tất cả các Dll được đề cập đều nằm trong một thư mục trong projectB và đó là nơi mà điểm tham chiếu. (Tôi không có tham chiếu trỏ đến GAC)Không sao chép vào thư mục bin

Các dll sao chép chính xác là Microsoft.Practices.Unity, Microsoft.Practices.Unity.Configuration và Microsoft.Practices.ServiceLocation.

Các dll không được sao chép chính xác là Devart.Data, Devart.Data.Oracle và Devart.Data.Oracle.Design.

Đây là tài liệu tham khảo cho mỗi dll ...

<Reference Include="Devart.Data, Version=5.0.124.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL"> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Devart.Data.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Devart.Data.Oracle, Version=5.70.170.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Devart.Data.Oracle.dll</HintPath> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Devart.Data.Oracle.Design, Version=5.70.170.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Devart.Data.Oracle.Design.dll</HintPath> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Microsoft.Practices.ServiceLocation.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Microsoft.Practices.Unity.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Microsoft.Practices.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Microsoft.Practices.Unity.Configuration.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>True</Private> 
</Reference> 

Bất cứ ai khác có vấn đề này? Tôi có làm điều này sai không? Cảm ơn

EDIT Tôi đã mở một màn hình tệp và xem nơi studio hình ảnh đang tải tham chiếu và cho Unity, nó đã nhận được các tệp từ vị trí tôi đã chỉ định. Nhưng, đối với Devart dlls nó đang tìm kiếm trong GAC! Có thể Devart dlls gây ra điều này bằng cách nào đó?

Trả lời

8
  1. nhấp chuột phải vào các dll được tham chiếu và kiểm tra xem địa phương sao chép có đúng không.
  2. bạn cũng có thể thử readding tài liệu tham khảo của bạn một lần, điều này đã giải quyết được một vấn đề tương tự đối với tôi khi tôi đã chuyển đổi dự án VS2005 thành dự án VS2008.
+0

Tôi có bản sao cục bộ bằng true. Tôi đã thêm lại cách tham chiếu của Devart nhiều lần ... tin tôi đi. Dường như nó chỉ là những dll Devart. Họ có thể gặp sự cố gây ra vấn đề này không? –

+0

Tôi không thể nghĩ ra bất cứ điều gì khác, bạn có thể thử sao chép các đề tài trong quá trình xây dựng bài viết hoặc tham khảo các dll trực tiếp từ projectA –

+0

. Nếu bạn có các dev dev trong GAC hãy thử gỡ bỏ chúng và xây dựng lại các dự án của bạn –

0

Nếu các tệp DLL này nằm trong thư mục con cho dự án B, hãy đảm bảo thuộc tính "Sao chép cục bộ" cho mỗi tham chiếu được đặt thành true.

Ngoài ra, nếu các tệp DLL được bao gồm dưới dạng tệp trong dự án của bạn, hãy kiểm tra thuộc tính studio trực quan cho chính tệp đó. "Hành động xây dựng" nên được đặt thành "Không" và "Sao chép vào thư mục đầu ra" phải được đặt thành "Không sao chép". EDIT: Đơn giản chỉ cần có chúng như là tài liệu tham khảo với bản sao địa phương = true sẽ chăm sóc sao chép.

Nếu các cài đặt này khác nhau đối với các tệp DLL khác nhau, điều đó có thể giải thích tại sao một số tệp được sao chép vào thư mục bin và các cài đặt khác thì không.

11

Tôi gặp sự cố tương tự với tham chiếu bên ngoài. Vấn đề là các thư viện không được sử dụng không được sao chép. Bạn có sử dụng thư viện Devart từ dự ánB của mình không? Bất kỳ ví dụ, thừa kế, bất cứ điều gì, ... ?? Hãy thử điều này: Thực hiện một số lớp mô phỏng từ ba thư viện trong projectB của bạn và biên dịch lại. Nó đã làm việc cho tôi. Tôi muốn nhận được lời giải thích chính thức.

1

Đặt làm bản sao cục bộ không hoạt động đối với tôi. Điều duy nhất giải quyết (không sử dụng được) là tham khảo một số loại có trong assembly.

3

Sự cố cũng xuất hiện khi bạn có dll là phụ thuộc của người khác. Ví dụ Microsoft.ApplicationServer.Caching.AzureClientHelper.dll được sử dụng trong nội bộ bởi Microsoft.ApplicationServer.Caching.Client. Mặc dù tôi có copyLocal = True assembly helper không được sao chép bởi vì nó không được tham chiếu bất cứ nơi nào trực tiếp trong mã của tôi.Để tránh vấn đề này, bạn có thể tạo biến kiểu riêng tư như sau:

Loại phụ thuộcOnThisTypeOfAssembly = typeof (TypeFromDependentAssembly);

Điều này sẽ làm cho một tham chiếu đến loại và lắp ráp sẽ được sao chép cục bộ trong khi trong quá trình xây dựng.

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