Analyzers are only run in debug build, so setting TreatWarningsAsErrors
for release build will catch the compiler warnings until we resolve all
analyzer warnings.
The `/Packages/{Name}` endpoint would return a package that had either
the corrent name or the correct guid. In reality it shoud check if both
are correct.
* Compare the MD5 checksum when downloading plugins
* Reduced log spam due to http requests
* Removed 'GetTempFileResponse' function from HttpClientManager
* Fixed caching for HttpClientManager
Remove a few superfluous/testing log statements, and print the
deletion debug messages when it occurs rather than earlier. Use
a nicer name for the isDirectory variable.
Upgrading plugins was broken for various reasons. There are four
fixes and a minor one:
1. Use a directory name based only on the `Name` of the plugin, not
the source filename, which contains the version. Avoids strange
duplication of the plugin.
2. Use the new directory name for the deletes if it's present, so
that installation and removal happen at that directory level
and we don't leave empty folders laying around. Ensures we
properly remove additional resources in plugins too, not just
the main `.dll` file.
3. Ignore the incoming `target` when installing, and always set
it ourself to the proper directory, which would matter when
reinstalling.
4. Deletes an existing target directory before installing if it
exists. Note that not calling any of the plugin removal code
is intentional; I suspect that would delete configurations
unexpectedly when upgrading which would be annoying. This way,
it just replaces the files and then reloads.
5. (Minor) Added some actual debug messages around the plugin
download section so failures can be more accurately seen.
This makes resolving dependencies from the container much easier as
you cannot resolve with primitives parameters in a way that is any
more readable.
The aim of this commit is to change as little as possible with the end
result, loggers that were newed up for the parent object were given the same
name. Objects that used the base or app loggers, were given a new logger with
an appropriate name.
Also removed some unused dependencies.