跨平台主路径还是有条件的平台特定路径?
Cross platform home path or conditional platform-specific path?
所以我在这里要解决的问题是,既然 visual studio 是跨平台的,我必须重新考虑一些构建策略。目前,我的 nuget 库项目在构建后将包发布到本地提要。这使我可以在使用这些包的其他项目中进行开发,而无需发布到远程 nuget 服务器。目前,我通过将以下目标添加到每个项目的 csproj 来促进这一点:
<Target Name="PushPackage" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug'">
<Exec Command="nuget init $(ProjectDir)\bin\debug C:\nuget" />
</Target>
所以这会将每个包推送到 c:\nuget。这在 windows 上工作正常,但是当一个人在 VSCode 上工作时 Ubuntu,例如,C:\
不是问题。
所以我的问题是:是否有跨平台的方式来定位 "home" 例如?我考虑过使用 $(Platform)
作为目标中 Exec 行的条件,这样我就可以使用条件发出不同的命令,但我似乎无法找到我可以从 $(Platform)
。欢迎任何其他想法。
Cross platform home path or conditional platform-specific path?
如果你想这个命令可以跨平台使用,你可以使用选项 $(OS) 条件 '$(OS)' == 'Windows_NT' 和 '$(OS)' != 'Windows_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>
所以我在这里要解决的问题是,既然 visual studio 是跨平台的,我必须重新考虑一些构建策略。目前,我的 nuget 库项目在构建后将包发布到本地提要。这使我可以在使用这些包的其他项目中进行开发,而无需发布到远程 nuget 服务器。目前,我通过将以下目标添加到每个项目的 csproj 来促进这一点:
<Target Name="PushPackage" AfterTargets="Pack" Condition="'$(Configuration)'=='Debug'">
<Exec Command="nuget init $(ProjectDir)\bin\debug C:\nuget" />
</Target>
所以这会将每个包推送到 c:\nuget。这在 windows 上工作正常,但是当一个人在 VSCode 上工作时 Ubuntu,例如,C:\
不是问题。
所以我的问题是:是否有跨平台的方式来定位 "home" 例如?我考虑过使用 $(Platform)
作为目标中 Exec 行的条件,这样我就可以使用条件发出不同的命令,但我似乎无法找到我可以从 $(Platform)
。欢迎任何其他想法。
Cross platform home path or conditional platform-specific path?
如果你想这个命令可以跨平台使用,你可以使用选项 $(OS) 条件 '$(OS)' == 'Windows_NT' 和 '$(OS)' != 'Windows_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>