I was thinking of asking this question in the NuGet project, but they redirected me here to ask generic questions. So I will ask here.

I want to develop an application that will use the CsvHelper library, and on their website they told that it is free for commercial uses. But later I found that I can choose between two licenses, Apache 2.0 or Microsoft Public License, that I can choose which one is more suitable for my case.

I would prefer to not give the source code to the client, but if none of the licenses allow that, it is not a problem.

Also I prefer to avoid that my customer could give the application to others, but I don't know if it is possible with this kind of licenses. Really it is not mandatory, I could allow it, but at first I would prefer to not allow that.

It seems that Microsoft allows me to keep my source code as closed source, if I am not wrong, but I don't know if it allows all of my preferences, to not give the source code and to not allow distribution to 3rd parties.

1 Answer 1


The license.txt of this library clearly states that the library is dual licensed, you can therefore choose under which terms you want to use it, either Apache or MS-PL.

Both licenses allow that you can keep your own code as closed source, if you want, and you can sell your application for money under a license of your choice, provided, however, that you comply with the requirements that come with the license of your choice (Section 3 of the MS-PL, or Section 4 of the Apache license). That should not be difficult for you, you can achieve your objective with any of the 2 license options for the CsvHelper library.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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