好吧,它看起來像UWP和.NET Core項目可以使用相同的project.json。它的「框架」一節的樣子:
"frameworks": {
"netstandard1.3": {},
"uap10.0": {
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2"
}
}
},
因爲UWP項目都有自己的csproj文件,這導致3倍號樓的DLL:project.json導致netstandard1.3和uap10.0文件夾顯示在斌/調試(和將生成的DLL放置在那裏)當構建.NET Core項目時,而UWP項目本身在bin/Debug中構建另一個DLL。
bin/Debug/uap10.0/My.dll是垃圾,它不能包含任何UWP專用代碼(因爲通用Windows引用在.NET Core項目中不可用),因此我沒有在項目中定義WINDOWS_UWP .json的「uap10.0」部分。
但是,UWP csproj文件確實定義了WINDOWS_UWP,並且該項目中提供了通用Windows。所以,當UWP項目被建成,它實際上只使用了這一點:
"uap10.0": {
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2"
},
(如果這個代碼是在project.json丟失,UWP項目將無法生成)。 project.json的其餘部分(主要針對「netstandard1.3」目標)對構建過程沒有任何影響。
所以我依靠的事實是,我可以在project.json中定義條件指令(在這種情況下是WINDOWS_UWP),但也在csproj文件中,因此在處理使用相同項目的UWP項目時會獲得額外結果.json文件作爲.NET Core項目。在某種程度上,UWP csproj作爲另一個在構建過程中與真實項目合併的project.json。
是的,我得到了一個額外的DLL bin/Debug/uap10.0/My.dll這是沒有用的(只是浪費編譯時間),但我會只選擇那些有用的輸出所以在我的特殊情況下這不是問題。
恐怕我沒有提到(爲了簡潔起見)實際上有更多更老的Visual Studio和.NET Framework的目標(例如.NET Framework 2.0),並且這些目標不能使用共享庫的概念。所以我實際上不能用這種方式重組我的項目。 – Alex