我想收拾库作为NuGet包在PowerShell中,像这样:dotnet包 - 如何指定包的名称?
function Create-NuGetPackages($projects) {
if (!(Test-Path $NuGetPackageDirectory)) {
New-Item $NuGetPackageDirectory -ItemType Directory
}
foreach ($project in $projects) {
pushd $project.DirectoryName
& dotnet.exe pack --configuration $Configuration --output $NuGetPackageDirectory --no-build
popd
}
return $NuGetPackageDirectory
}
该项目使用project.json
和.xproj
文件(也有.csproj
文件在项目工作。 NET 4.5.1)。上述命令的功能,但我最终与NuGet包名称MyProject.Core
,我需要它是MyProject
匹配旧包。
该项目是一个端口,最明智的做法是命名文件夹后的Java包,这是MyProject.Core
,但我似乎无法弄清楚如何使它生成一个不同名称的NuGet包。
我对CLI使用此命令尝试:
dotnet pack "src\MyProject.Core\MyProject.csproj" --output NuGetPackages\ --configuration "Release"
,但它给人的错误:
Unable to find a project.json in src\MyProject.Core\MyProject.csproj\project.json
根据this page:
PROJECT
The project to pack. It's either a path to a csproj file or to a directory. If omitted, it defaults to the current directory.
那么,为什么如果我指定csproj的路径是否查找project.json文件?
我能够通过指定解决此问题的程序集的名称:
"buildOptions": { "outputName": "MyProject" },
但包命令完全忽略了这一点。在packOptions
部分中似乎也没有指定NuGet软件包名称的选项。
我看看this old question,但它看起来像是在谈论nuget工具,而不是dotnet工具。
是我唯一的选择重命名文件夹(这可能会导致很多其他东西现在打破),或者有另一种方式来指定dotnet pack
命令的NuGet包名称?
在附注中,我已经在几个地方看过project.json
即将消失,我们将回到.csproj
,但目前尚不清楚何时生效。我应该打算消除project.json
文件还是为时过早?
重新迁移* .csproj':见[这里](https://docs.microsoft.com/en-us/dotnet/articles/core/migration/#migration -from-projectjson-to-csproj)和[这里](https://docs.microsoft.com/zh-cn/COM/EN-US/DOTNET /用品/核心/工具/项目JSON到的csproj)。 – mklement0
@ mklement0 - 谢谢。但正如LexLi已经指出的那样,这些功能还没有完全发挥作用。我宁愿不为另一个部分工作的解决方案交易 - 特别是如果它意味着放弃可以同时适用于.NET标准和.NET Framework并且返回到.nuspec文件并且每个项目有2个不同构建命令的单个“dotnet pack”命令(用于2个不同的.csproj文件)。 – NightOwl888