2017-06-14 75 views
2

根據文檔https://docs.microsoft.com/en-us/nuget/schema/msbuild-targets,它看起來像msbuild現在支持NuGet的兩個特定目標:PackRestore。 我已經能夠正確使用Restore,但不能使用Packmsbuild/t:Pack是否支持完整的.Net框架?

錯誤MSB4057:目標「包」在項目中不存在。

它是否支持傳統的.Net項目,還是僅僅是.Net核心的東西?
我一直沒能找到任何明確說明的文檔。

關於需要的依賴,我使用

PM> nuget help 
NuGet Version: 4.1.0.2450 
usage: NuGet <command> [args] [options] 
Type 'NuGet help <command>' for help on a specific command. 

而且

C:\Git>msbuild /version 
Microsoft (R) Build Engine version 15.1.1012.6693 
Copyright (C) Microsoft Corporation. All rights reserved. 

15.1.1012.6693 

隨着

Microsoft Visual Studio Professional 2017 
Version 15.2 (26430.12) Release 
VisualStudio.15.Release/15.2.0+26430.12 
Microsoft .NET Framework 
Version 4.6.01586 

回答

2

「基於SDK」項目開箱即用。在VS中沒有使用這種新風格的csproj「」的項目模板,但是您可以創建.NET標準庫項目並手動將csproj文件中的TargetFramework屬性從netstandard1.6更改爲net461。請注意,用於這些類型項目的項目系統不支持經典.net項目中的許多功能(如WinForms,Xaml,edmx的設計人員)。

所得到的項目文件應該是這樣的:

<Project Sdk="Microsoft.NET.Sdk"> 
    <PropertyGroup> 
    <TargetFramework>net461</TargetFramework> 
    </PropertyGroup> 
</Project> 
+0

所以這裏的關鍵是要切換到新的csproj格式?所以,直到VS支持** AS DEFAULT **爲止,沒有必要通過黑客來切換,對吧? – GGirard

+1

是的新格式爲NuGet屬性帶來了集成和屬性編輯器。還有'NuGet.Build.Tasks.Pack' NuGet包,但如果不向「sdk-style」項目默認的csproj添加更多屬性,這可能無法「足夠好」。 但是,如果你只創建了「邏輯」nuget包,這已經被支持了,它只是沒有模板。並且它已經創建了多少個庫(例如Newtonsoft.Json) –

+0

我在Azure相關的NuGet中看到了它幾次,並且想知道它是如何工作的。現在看起來很清楚:我會堅持使用舊的nuspecs,因爲我的解決方案包含類庫項目,但也包含Asp.Net MVC和WebAPI。我不想有多種方式來管理相同解決方案中的NuGet定義。 – GGirard

1

貌似我沒有足夠的谷歌......這個博客帖子講清楚有關僅限Net核心:http://blog.nuget.org/20170316/NuGet-now-fully-integrated-into-MSBuild.html

以前討論的一些功能尚未完全支持 基於packages.config的項目,例如在 項目文件中定義nuspec元數據,直接從項目構建包[...]。我們很努力地將這些項目類型的PackageReference支持提供給 。我們的目標是最終使PackageReference 成爲默認設置並遠離所有其他格式。

+1

的VS 2017年15.2版本,支持PackageReference經典項目已經發貨。但是這不會給包裝提供支持。 –

相關問題