2017-06-14 72 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经典项目已经发货。但是这不会给包装提供支持。 –

相关问题