2016-06-30 27 views
7

(Câu hỏi phụ đề: Tài nguyên không được hỗ trợ trong .netstandard 1.3 hoặc tệp dự án của tôi chỉ rối tung?)Tại sao tôi không thể sử dụng tài nguyên được nhúng (resx) khi nhắm mục tiêu .netstandard 1.3?

Tôi vừa tạo một thư viện lớp mẫu di động trong Visual Studio 2015 Update 3 và thêm tệp tài nguyên mẫu. Ban đầu, tệp project.json trông giống như sau:

{ 
    "supports": { 
    "net46.app": {}, 
    "uwp.10.0.app": {}, 
    "dnxcore50.app": {} 
    }, 
    "dependencies": { 
    "Microsoft.NETCore": "5.0.0", 
    "Microsoft.NETCore.Portable.Compatibility": "1.0.0" 
    }, 
    "frameworks": { 
    "dotnet": { 
     "imports": "portable-net452+win81" 
    } 
    } 
} 

Phạt tiền: Không có lỗi biên dịch!

Sau đó, tôi đã sử dụng thuộc tính dự án để nhắm mục tiêu .NETStandard 1.3.

portable class library target

Bây giờ project.json trông như thế này:

{ 
    "supports": {}, 
    "dependencies": { 
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1", 
    "NETStandard.Library": "1.6.0" 
    }, 
    "frameworks": { 
    "netstandard1.3": {} 
    } 
} 

Bây giờ tôi nhận được sau xây dựng lỗi - có nghĩa là về cơ bản việc xây dựng hành động EmbeddedRessource không được hỗ trợ:

german error

Tôi thực sự không có chuyên gia với project.json, nhưng đối với tôi, mọi thứ có vẻ không nhất quán - và tôi không có ý tưởng gì về vấn đề này.

  • trong project.json đầu tiên: nếu tôi hỗ trợ net46, tại sao là nó nhập khẩu net452?
  • trong số project.json thứ hai: nếu tôi sử dụng netstandard1.3, tại sao phụ thuộc vào thư viện trong phiên bản 1.6?
  • và cuối cùng, .NETPortable, Version=v5.0 là gì? Việc đổi tên .NET Core đã diễn ra vào đầu năm nay - tại sao chúng tôi vẫn đang tham chiếu phiên bản 5.0? Thậm chí MSDN không biết <TargetFrameworkVersion>5.0</TargetFrameworkVersion> được quy định tại các csproj

Đối với tôi, điều này có vẻ như netstandard không chỉ về thư viện có sẵn, dụng cụ dường như có liên quan, quá. Nhưng điều đó không giải thích, tại sao nó hoạt động cho dnxcore50.

+0

tôi nghi ngờ rằng điều này có cái gì để làm với thực tế là cửa sổ phổ cập các ứng dụng không sử dụng 'resx 'tệp. Nhưng: các ứng dụng Windows phổ biến tương thích với 'netstandard 1.4' và cao hơn ... – ventiseis

+0

bạn nói đúng về phần resx, nhưng UWP thực sự tương thích với 'netstandard1.4' và thấp hơn không cao hơn. – nawfal

+1

Bạn nói đúng, tôi đã xem [ma trận] (https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md) và hiểu nhầm các mũi tên. Nhưng nó thậm chí còn được viết ở đó: _Nếu một thư viện nhắm mục tiêu .NET Platform Standard phiên bản 1.3, nó chỉ có thể chạy trên .NET Framework 4.6 trở lên, .NET Core, Nền tảng Windows Phổ 10 (UWP) và nền tảng Mono/Xamarin._ – ventiseis

Trả lời

5

Bạn cần Diagonstics.Tools và Resources.ResourceManager.

tôi đã làm việc này (ví .NETStandard 1,4 mặc dù) bằng cách cài đặt trước phiên bản, vào thời điểm này:

  • "System.Diagnostics.Tools": "4.3.0-preview1-24530- 04"
  • 'System.Resources.ResourceManager': '4.3.0-preview1-24530-04'
+0

Nếu tôi thử lại lần nữa trong một dự án VS 2015 sạch mới, mới, nó thực sự hoạt động, sau khi tôi cài đặt gói 'System.Reflection.Emit.ILGeneration' trong ứng dụng UWP. Nhưng tôi sẽ đánh dấu câu trả lời của bạn bởi vì bạn đã cho tôi gợi ý để cài đặt các gói bị thiếu. – ventiseis

+1

Có vẻ như Microsoft đã tạo ra một khu rừng mới với các gói tương thích và không tương thích, số phiên bản và các phụ thuộc không dễ hiểu và dễ quản lý nếu bạn không phải là một trình hướng dẫn của thế giới '.NET' mới. Tôi hy vọng điều này sẽ được làm sạch và ổn định trong tương lai. – ventiseis

+2

Tôi chắc chắn rằng nó sẽ và vui mừng u figured it out –

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