-
Notifications
You must be signed in to change notification settings - Fork 649
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Strategies for assembly versioning #147
Conversation
I think strict must be the default. |
I've started to work on this. |
I've pushed up two commits to get some early feedback. Main changes:
|
Hmmm. Build failed. I'm a bit puzzled by the error message:
@SimonCropp Could you please give me a hand here? Previous commit was also relying on |
@nulltoken can u try putting |
This error can happen for release builds. Without the source location approval tests doesn't work. @SimonCropp's fix should work |
I have also had to attribute my test method with no-inlining which also has fixed this issue for me in the past |
Are we all good with strict being the default? |
Yep, strict is good. The issue with not being strict by default is it actually sucks for the people that use strong naming for real reasons (like simon) |
Ok. I more or less managed to have the tests pass (thanks to @SimonCropp and @JakeGinnivan help). Now there's a different kind of failure:
Any idea? Once this is solved I'll clean up the history from my attempts. |
This is my fault. I can't look into it for now. Just disable that build step for now until I can look into it |
@JakeGinnivan Disabling the last step fixed the issue. Thanks! |
All good now.
|
Looks good to me! |
@nulltoken I just saw that |
Duh. That's a mistake. 😳 I'll send a PR this evening along with some tests to cover this assembly versionning scheme. __shamefully crawling back under my rock** |
No worries! |
Current state of affairs
Currently asmversion is set to
major.minor.0.0
for the purpose of this discussion lets call this strategyMajorMinor
Other potential strategies
MajorOnly
= `major.0.0.0``Strict
=major.minor.patch.0
None
= `1.0.0.0``Proposed changes
In order to relieve some of the pain with strongnaming until we can remove it we (NServiceBus) has decided to only put the major into our asm version to avoid asmredirects for minor + patch updates. Ie we're applying the
MajorOnly
strategy from above. I propose that we add at least that one to GitVersionDefaults
Should we keep the current strategy as the default?
The way I see it the
MajorMinor
is somewhat between all the others and if you follow SemVer AND is strongnamed I argue thatMajorOnly
is more appropriate.For non strongnamed projects the obvious strategy would be the
Strict
since its non lossy. Could we in anyway detect this and adjust accordingly?If we can't detect perhaps
Strict
is the best default and then strongnamed projects can override depending if they follow SemVer or not?