I don’t know if it’s a “best practice”, but I faced the same challenge, and went with storing the License as encoded data in our application’s database, set through an admin web UI.
Then when the application loads, it retrieves the data from the database, decodes it, and sets the license key.
Challenges you’ll want to watch for are implementing a synclock in your application code if your application is multi-threaded, and could call .SetLicense multiple times concurrently. Or if you are deploying in a web-farm or server-cluster, each node will need to call .SetLicense individually, but you would need to use a distribute cache like Redis to alert the nodes when the license file value changes.
This way we can distribute our application without giving access to a plain-text .lic file on the filesystem.
Hope that helps,