2016-03-14 16 views
5

Sau khi đọc mọi thứ tôi có thể tìm thấy về phần tử contentFiles mới của NuGet 3.3+, tôi vẫn không thể quản lý để làm cho nó hoạt động trong gói của tôi. Tôi đã có một gói nhắm mục tiêu cả hai net46uap10.0 và việc chọn các DLL phù hợp cho loại dự án và nền tảng hoạt động như mong đợi. Nhưng tôi cũng muốn thêm hai tệp vào dự án cài đặt gói, một tệp CSV cho tất cả các dự án và nền tảng và một tệp mã cho C# hoặc VB.Net (với buildAction="Compile"). Đây là phiên bản rút gọn của tập tin .nuspec mới nhất của tôi:NuGet 3.3+: contentFiles không được thêm vào dự án

<?xml version="1.0" encoding="utf-8" ?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata minClientVersion="3.3.0"> 
    ... 
    <contentFiles> 
     <files include="any\any\ErrorCodes.csv" buildAction="None" copyToOutput="false" /> 
     <files include="cs\any\Errors.cs.pp" buildAction="Compile" /> 
     <files include="vb\any\Errors.vb" buildAction="Compile" /> 
    </contentFiles> 
    </metadata> 
    <files> 
    <file src="contentFiles\any\any\ErrorCodes.csv" target="contentFiles\any\any\" /> 
    <file src="contentFiles\cs\any\Errors.cs.pp" target="contentFiles\cs\any\" /> 
    <file src="contentFiles\vb\any\Errors.vb" target="contentFiles\vb\any\" /> 
    ... 
    </files> 
</package> 

Các gói phần mềm được tạo ra mà không có lỗi, và nó chứa ba tập tin trong thư mục contentFiles với cấu trúc thư mục chỉ định.

Nhưng khi tôi cài đặt gói - tôi đã thử với cả ứng dụng toàn cầu (C# và VB) và ứng dụng giao diện điều khiển .NET 4.6 tôi đã sửa đổi để sử dụng tệp project.json - tham chiếu đến DLL được thêm vào, nhưng các tệp nội dung không được thêm vào cấu trúc dự án, cũng như không được sao chép vào thư mục dự án.

Tôi biết ơn mọi đầu vào!

Trả lời

6

OK, tôi thấy rằng contentFiles thực sự hoạt động, nhưng không theo cách tôi mong đợi. Một mô tả ngắn gọn cho tất cả mọi người không thể tìm thấy/contentFiles mình:

  • NuGet 3.3+ contentFiles là không bổ sung vào cơ cấu dự án. Bạn sẽ không thấy chúng trong Visual Studio.
  • Thay vào đó, các tệp được trích xuất vào một thư mục trong thư mục obj của dự án và được tham chiếu (nếu tệp là mã). Bạn thậm chí sẽ thấy các lớp hoặc các phương thức trong các tệp mã nội dung của bạn có sẵn trong IntelliSense. Trong trường hợp của tôi, lớp Errors có thể truy cập được, mặc dù nó không hiển thị ở bất kỳ đâu trong dự án.
  • Đường dẫn của các file trích xuất có giản đồ sau: \ obj \ < gỡ lỗi hoặc Thả > \ NuGet \ < một số GUID > \ < NuGet tên gói > \ < phiên bản > \

Tôi không chắc chắn nếu tôi thích cơ chế mới này. Mã đến từ một số nguồn vô hình tôi không thể nhìn thấy trong Visual Studio (một thư viện được chuyển qua NuGet có thể nhìn thấy trong Tài liệu tham khảo, bất kỳ mã nào nó mang qua contentFiles không) có thể gây ra vấn đề ở lần. Tôi thực sự phát hiện ra rằng cơ chế contentFiles đang hoạt động khi tôi gặp lỗi mơ hồ trong Visual Studio vì "invisible.cs" vô hình từ gói NuGet va chạm với các lỗi "có thể nhìn thấy" mà tôi đã thêm vào dự án theo cách thủ công.

+0

tôi không thích cơ chế mới này - nó làm tăng thêm căng thẳng cho quá trình - khó xem điều gì đang xảy ra – tofutim

+0

Tôi đang bối rối, tôi đang cố gắng theo dõi tệp nuspec của bạn và trong khi tôi thấy contentFiles trong thư mục gói, không có gì vào thư mục obj. Tui bỏ lỡ điều gì vậy? – tofutim

+0

Bạn đã cố gắng biên dịch dự án chưa? Tôi nghĩ rằng các tập tin được sao chép vào thư mục obj trong quá trình biên dịch. –

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