我有一个包含多个项目的解决方案。假设PackageA和PackageB,其中PackageB依赖于带有ProjectReference 的PackageA。\n每个项目都设置为在构建时输出 NuGet 包。这个过程本身工作得很好,但我无法为各个构建指定包版本范围。\n例如 我想限制 PackageB 仅引用 PackageA 版本 1.0.* (补丁步骤)。
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">\n <PropertyGroup\n <TargetFrameworks>netstandard2.0;netcoreapp2.0;net46</TargetFrameworks>\n\n <RootNamespace>PackageB</RootNamespace>\n <Company>MyCompany</Company>\n <Authors>John Doe</Authors>\n <Description>This package depends on a specific version of PackageA.</Description>\n <Version>1.1.0</Version>\n <Copyright>Copyright \xc2\xa9 2018 John Doe</Copyright>\n <GeneratePackageOnBuild>true</GeneratePackageOnBuild>\n </PropertyGroup>\n\n <ItemGroup>\n <ProjectReference Include="..\\PackageA\\PackageA.csproj" />\n </ItemGroup>\n</Project>\nRun Code Online (Sandbox Code Playgroud)\n\nMSBuild 似乎忽略ProjectReference标记中的任何Version="1.0.*"或AllowVersion="1.0.*"参数。\n是否可以在不破坏ProjectReference或使用PackageReference 的情况下指定版本范围?
所以“myLibrary”引用“anotherLibrary”。两个库都遵循http://semver.org/
如果我发布了 myLibrary 的新版本,强制消费者更新到 anotherLibrary 的新主要版本,myLibrary 的主要版本是否也应该增加?
我有以下内容:
versionNumber=$(sw_vers -productVersion) # Finds version number
versionShort=${versionNumber:0:4} # Cut string to 1 decimal place for calculation
Run Code Online (Sandbox Code Playgroud)
这个版本是这样的:
10.9.2
10.9.5
Run Code Online (Sandbox Code Playgroud)
但它不会匹配
10.10.3
Run Code Online (Sandbox Code Playgroud)
因为它只会返回
10.1
Run Code Online (Sandbox Code Playgroud)
但我希望将versionShort设置为
10.10
Run Code Online (Sandbox Code Playgroud)
我想要匹配上面的主要版本,第一个点和次要版本.
此问题适用于使用一种语言("源")编写的任何语言,例如C或Java,并使用动态链接分布在另一种语言("二进制")中,例如机器代码或Java字节代码.
假设用户已在使用我的库的版本A. 我发布了更新的版本B.
如果他可以在不改变B的情况下编译他的代码并且正确地使用B运行,则从A到B的改变被认为是源兼容的.
如果他可以针对A编译他的代码并且正确地使用B运行,则从A到B的改变被认为是二进制兼容的.当使用没有隔离模块加载的传递依赖图(例如OSGI)时,这种情况很常见.X是根据某些版本的Y和Z编译的,Y是针对不同的某个版本的Z编译的.在运行时,Y对Z的调用可能不正确并且可能会崩溃.
变更可能与源兼容,但二进制不兼容.变更也可能是源不兼容和二进制兼容的.
我使用哪种兼容性进行语义版本控制?我是否使用源兼容性来区分主要和次要/补丁更新,还是使用二进制兼容性来区分主要和次要/补丁更新?
我目前的动机是Scala库.Scala二进制兼容性可能非常难以分析,需要很好地理解编译器细节.源兼容性和二进制不兼容是很常见的.
这不是一些奇怪的边缘情况; 这个问题可以出现在大多数编译的动态链接语言中.
我想在我的package.json中使用预发布版本来获取最新版本中的一些依赖项(包含als预发行版)但由于某些原因它在我的情况下不起作用.预发布完全被忽略.举个例子,让我们使用角度.如果我问"angular": ">=1.4.0-rc.0 <1.4.1"一个依赖,我希望我会1.4.0-rc.2安装版本,但我得到的版本1.4.0.
该npm info angular节目,有可用像一些RC版本
......
'1.4.0-beta.4',
'1.4.0-beta.5',
'1.4.0-beta.6',
'1.4.0-rc.0',
'1.4.0-rc. 1',
'1.4.0-rc.2',
我的package.json现在看起来如下
"dependencies": {
"angular": ">=1.4.0-rc.0 <1.4.1"
}
Run Code Online (Sandbox Code Playgroud)
任何想法为什么我没有得到任何rc版本?我需要做些什么才能让它发挥作用?
我想对语义版本进行排序(semver.org)
v1.4.0
v1.4.0-alpha
v1.4.0-alpha1
v1.4.0-patch
v1.4.0-patch9
v1.4.0-patch10
v1.4.0-patch2
v1.5.0
v1.5.0-alpha
v1.5.0-alpha1
v1.5.0-alpha2
v1.5.0-patch
v1.5.0-patch1
Run Code Online (Sandbox Code Playgroud)
以适当的方式.例如,就像version_compare()在PHP中一样(它不直接,但可以用于此).
当然,sort -V|--version-sort这里不起作用.
$ echo 1.0 1.0-alpha | tr ' ' "\n" | sort --version-sort
1.0
1.0-alpha
Run Code Online (Sandbox Code Playgroud)
有一些存在的方法吗?
PS
在一般意义上,它应遵循此模式:
1.0.0-alpha
< 1.0.0-alpha.1
< 1.0.0-alpha.beta
< 1.0.0-beta
< 1.0.0-beta.2
< 1.0.0-beta.11
< 1.0.0-rc.1 < 1.0.0
< 1.0.0-patch < 1.0.0-patch.1.
Run Code Online (Sandbox Code Playgroud)
PPS
Semver 2.0不支持补丁,但它是必需的.
你如何命名初始版本?你能告诉第一个版本的正确版本吗?
这是我的候选人。
方式1
Start => 0.1.0 => 0.1.1 => 0.1.2
=> 0.2.0 => 0.2.2 => 0.2.3
...
=> 0.10.0
...
=> 1.0.0
Run Code Online (Sandbox Code Playgroud)
或者
方式2
Start => 0.0.1 => 0.0.2
=> 0.1.0 => 0.1.2 => 0.1.3
...
=> 0.10.0
...
=> 1.0.0
Run Code Online (Sandbox Code Playgroud)
命名版本的最佳做法是什么?
我有一个 C# 项目,想为其添加语义版本控制。因此,每当我推送到main分支时,我想创建一个新版本并根据提交类型自动生成新版本号。我认为语义释放很好地完成了这项工作,因为我已经将commitlint与husky一起使用。
对于复制:
\nnpm init -y以设置 npmSEMANTIC_RELEASE并添加访问令牌作为其值。
\nname: Release\n\non:\n push:\n branches:\n - `main`\n\njobs:\n release:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v2\n\n - name: Setup Node\n uses: actions/setup-node@v2\n with:\n node-version: 14.x\n\n - name: Install dependencies\n …Run Code Online (Sandbox Code Playgroud) .RELEASE文件的结尾是什么意思?
例如
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.0.RELEASE</version>
<scope>runtime</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)