dotnet 和 msbuild 中的 pack 之间的区别

M.H*_*san 2 .net c# msbuild .net-core

我使用的是VS2017新的SDK风格项目

在 dotnet 中,我可以使用以下命令进行打包:

      dotnet pack project.csproj     --no-dependencies  --no-restore --output c:\packages -p:TargetId=abc -p:configuration=release 
Run Code Online (Sandbox Code Playgroud)

在 msbuild 中,我可以使用以下命令进行打包:

     msbuild project.csproj /t:pack -p:TargetId=abc -p:configuration=release 
Run Code Online (Sandbox Code Playgroud)

如何--no-dependencies --no-restore --output 使用 msbuild设置 dotnet 的选项

Mar*_*ich 7

  • --no-restore不需要翻译。如果确实要恢复,请将-restore(简短形式-r)传递给 msbuild。
  • --no-build 翻译成 -p:NoBuild=true
  • --no-dependencies转换为-p:RestoreRecursive=false(请注意,这实际上并不需要与 一起使用--no-restore
  • --output 翻译成 -p:PackageOutputPath=C:\some\path

请注意其他命令,例如build转换--no-dependencies为不同的内容:-p:BuildProjectReferences=false它不会构建项目到项目的引用,而这可能是您想要的。

从命令行参数到 MSBuild 参数的完整映射分布在 dotnet/cli GitHub Repo 中的几个源文件中:

NuGet 目标支持的更多参数 - 您可以从命令行或项目文件中设置 - 在NuGet 包中记录并作为 MSBuild 目标还原