SQL: And where did the SSRS Private Assemblies folder move to in VS2017?

Hide and Seek

Recently, I posted about the templates folder for SQL Server Reporting Services designer moving in Visual Studio 2017. You'll find that blog post here.

I've also now found that the Private Assemblies folder has moved too. I do wish these locations would be fixed, shared, and known rather than needing to play hide and seek when updates are made to the SSRS designer tooling.

The Private Assemblies folder was used to hold a copy of any .NET assemblies that are referenced in your SSRS projects. By using .NET assemblies, you can share logic that's used in reports. It's worth noting that wherever we can, we try to avoid using .NET assemblies for this, and wish that SSRS had a way of dealing with common code inclusions, but that's a topic for another day.

Generally we only use code in reports for things like formatting functions, because we think that reports should render the data, not really calculate the data. (That should be done by a procedure or function on the server).

One of the reasons that we avoid using .NET assemblies for shared logic in reports is that when you do that, you buy yourself deployment issues. Where will the assembly (DLL) live? You basically have two choices:

Install it in the GAC (global assembly cache) – we don't like this one as it pollutes the GAC with application-specific logic.

Install it in both the Report Server's bin directory, and also in the private assemblies area for the SSRS designer. It has to go in two places as the designer needs to be able to find it during design time, and the report server needs to be able to find it at run time.

What has recently moved though, is where the private assemblies folder is located. Previously it was here:

\Program Files (x86)\Microsoft Visual Studio 14.0

Now it's either here:

\Program Files (x86)\Microsoft Visual Studio\2017

Or here:

\Program Files (x86)\Microsoft Visual Studio\2017

Like last time, I presume the difference is because of how the Visual Studio shell has been installed ie: either by SSDT (the SQL one), or by Visual Studio (the Enterprise one).



4 thoughts on “SQL: And where did the SSRS Private Assemblies folder move to in VS2017?”

  1. This was a great help. Thank you.

    In my case I was upgrading a project from VS2013 to VS2017. In such a case, as well as the new path you mention, a custom assembly dll needs also to be placed in D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PrivateAssemblies (or the SQL equivalent).

    I got this extra tidbit from https://stackoverflow.com/questions/43520437/ssrs-custom-assemblies-could-not-be-loaded-under-visual-studio-2017, but your post got me on the right 'path'.

    1. Great addition thanks Sebastian. I really wish this was much, much simpler. My real preference is for code inclusions at the project level, not having to deploy DLLs at all.

  2. After a long time of seeking the correct place and reading a lot of wrong information on the web now the correct path – many thanks

Leave a Reply

Your email address will not be published. Required fields are marked *