5

In official Microsoft docs:

✓ DO use a stable, version-independent product name at the second level of a namespace name.

But in Reference Source, the following namespaces ends with Version:

Microsoft.Build.Tasks.v4.0
Microsoft.Build.Utilities.v4.0
Microsoft.Build.Utilities.v3.5

So is Microsoft violating its own guidelines? Is it good idea to add version suffix to API/SDK namespace?

  • 6
    The second level of these namespaces is Build. This is version independent, so Microsoft is not violating the guideline you posted. – Bart van Ingen Schenau Apr 4 '18 at 7:10
8

When the documents mention second-level, they're referring to the section of the namespace indicated as (<Product>|<Technology>). The product or technology should be version independent.

So no, technically Microsoft isn't violating its own guidelines, however admittedly using versions in namespaces is probably not a great idea. The proper way to update your library is to deprecate methods and classes which will not be available in the next release of the library, with a clear reference to a replacement to be used instead in the documentation and/or in the code itself as a comment.

2

It looks a bit odd and it is not seamlessly upgradable. On the other hand, it gives Microsoft more freedom to move things around or even apply a full redesign for any next version.

If depends on the problem domain whether one approach or the other is appropriate. In this case it seems smart. Your build environment is very much technology- or even fashion-bound. If they come up with some new deploy model, substantial changes will have to be made to the build tools. It would basically be a new product. And it would be unthinkable you could or would even want to use your old build tools anyway. They do not fit anymore, the target would be new applications that do fit the new usage model.

You may regard it not so much to be a version upgrade, it is more like a new generation that should be set apart from the prior one.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.