Nuget 跨平台主路径还是有条件的平台特定路径?

Nuget 跨平台主路径还是有条件的平台特定路径?,nuget,.net-core,visual-studio-2017,asp.net-core-mvc-2.0,Nuget,.net Core,Visual Studio 2017,Asp.net Core Mvc 2.0,所以我想解决的问题是,既然VisualStudio是跨平台的,我必须重新考虑一些构建策略。目前,我让我的nuget库项目在构建之后将包发布到本地提要。这使我能够在使用这些包的其他项目中进行开发,而无需发布到远程nuget服务器。目前,我通过在每个项目的csproj中添加以下目标来促进这一点: <Target Name="PushPackage" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug'"> <E

所以我想解决的问题是,既然VisualStudio是跨平台的,我必须重新考虑一些构建策略。目前,我让我的nuget库项目在构建之后将包发布到本地提要。这使我能够在使用这些包的其他项目中进行开发,而无需发布到远程nuget服务器。目前,我通过在每个项目的csproj中添加以下目标来促进这一点:

<Target Name="PushPackage" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug'">
    <Exec Command="nuget init $(ProjectDir)\bin\debug C:\nuget" />
</Target>

因此,这会将每个包推送到c:\nuget。这在windows上很好,但是当个人在Ubuntu上使用VSCode时,例如,
C:\
不是一件事

所以我的问题是:有没有跨平台的方法来瞄准“家”这个例子?我考虑使用
$(平台)
作为目标中Exec行的条件,以便我可以使用条件发出不同的命令,但我似乎找不到可以从
$(平台)
中获得的值的列表。欢迎提出任何其他想法

跨平台主路径还是有条件的平台特定路径

如果希望此命令可以跨平台使用,可以使用选项$(操作系统),条件为'$(操作系统)=='Windows\u NT''$(操作系统)!='Windows\u NT'

因此,具体目标应该是:

  <Target Name="PushPackageOnWindows" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug' AND '$(OS)' == 'Windows_NT'">
    <Exec Command="nuget init $(ProjectDir)\bin\debug C:\nuget" />
  </Target>

  <Target Name="PushPackageOnUbuntu" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug' AND '$(OS)' != 'Windows_NT'">
    <Exec Command="nuget command on Ubuntu" />
  </Target>

跨平台主路径还是有条件的平台特定路径

如果希望此命令可以跨平台使用,可以使用选项$(操作系统),条件为'$(操作系统)=='Windows\u NT''$(操作系统)!='Windows\u NT'

因此,具体目标应该是:

  <Target Name="PushPackageOnWindows" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug' AND '$(OS)' == 'Windows_NT'">
    <Exec Command="nuget init $(ProjectDir)\bin\debug C:\nuget" />
  </Target>

  <Target Name="PushPackageOnUbuntu" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug' AND '$(OS)' != 'Windows_NT'">
    <Exec Command="nuget command on Ubuntu" />
  </Target>

我接受了上述答案,但我想提供最终解决方案,以防其他人遇到同样的情况。.deb nuget软件包已经过时,而且
dotnet nuget
cli命令也被过度淡化,因此我最终安装了mono并下载了最新的windows nuget.exe。当它作为两个单独的目标块执行时,它没有执行,所以我像这样使用它:

 <Target Name="PushPackage" AfterTargets="Pack">    
    <Exec Condition="'$(OS)'=='Windows_NT'" 
      Command="nuget init $(ProjectDir)\bin\Debug c:\nuget" />
    <Exec Condition="'$(OS)'!='Windows_NT'" 
      Command="mono /usr/bin/nuget.exe init $(ProjectDir)bin/Debug ~/Documents/Nuget" />
 </Target>

我接受了上述答案,但我想提供最终解决方案,以防其他人遇到同样的情况。.deb nuget软件包已经过时,而且
dotnet nuget
cli命令也被过度淡化,因此我最终安装了mono并下载了最新的windows nuget.exe。当它作为两个单独的目标块执行时,它没有执行,所以我像这样使用它:

 <Target Name="PushPackage" AfterTargets="Pack">    
    <Exec Condition="'$(OS)'=='Windows_NT'" 
      Command="nuget init $(ProjectDir)\bin\Debug c:\nuget" />
    <Exec Condition="'$(OS)'!='Windows_NT'" 
      Command="mono /usr/bin/nuget.exe init $(ProjectDir)bin/Debug ~/Documents/Nuget" />
 </Target>