-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add InternalsVisibleTo to the VSMac Razor assembly. #39673
Add InternalsVisibleTo to the VSMac Razor assembly. #39673
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@jinujoseph would you please help with landing this? Thanks! |
@jinujoseph would it be possible to get this for 16.4? |
@sandyarmstrong It's a simple change from the tech side, but that may require filling out a QB template internally to get approval. (not sure if we cover this under that rule or not). @jinujoseph? |
I'm not convinced this warrants a QB insertion/exception. I've worked around the limitation on the Razor side and even if the change were to make it into 16.4 we wouldn't be able to consume it on the Razor side because of the Roslyn binary mismatches in VSwin/VSmac. @sandyarmstrong was there something in particular you were concerned about? |
We need IVTs regardless because I don't want to be cornered into committing design crimes again like we did last week. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are three other projects missing this change:
- src/VisualStudio/Core/Def/Microsoft.VisualStudio.LanguageServices.csproj
- src/VisualStudio/Razor/Microsoft.VisualStudio.LanguageServices.Razor.RemoteClient.csproj
- src/Workspaces/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj
@sandyarmstrong What are those needed for? IVT policy for those is very different and would result in this PR being held up likely. |
We've realized that IVTs are now specified in more than one place. It used to be that we could go to a single file and it managed all the IVTs conveniently. Now we found the places Sandy found, and while we don't need MS.VS.LanguageServices and Razor.RemoteClient, we do need Microsoft.CodeAnalysis.Workspaces.dll, for |
@KirillOsenkov Are those new ones you added being built with the MonoDevelop key, or are new Razor-build binaries? |
@jasonmalinowski these are all in the Razor codebase and built with the Razor key. The Razor team owns the VSMac experience ;) |
Is there a reason the existing assemblies that already have IVT aren't being used? I would have imagined that code was all shared between both platforms. My line of questioning here mostly is us adding new IVTs is something we aren't doing freely anymore; if there are different projects perhaps because they're coming from different builds, then it means we need to at least somewhat understand what is going on around us. |
Unfortunately yes, we have a reason. The Windows assemblies use CPS for the project system functionality, and the implementation of IDynamicFileInfoProvider on the Windows side is all in the Roslyn VS layer (Microsoft.VisualStudio.LanguageServices.dll) that VSMac can't use. Believe me, we've committed quite a few design crimes to work around the IVTs and what we came up with is unfortunately the most realistic tactical solution. We placed a base class into the assembly that can see Roslyn's internals, and derived from it in the assembly that doesn't see Roslyn internals. Basically our design was guided by where we have IVTs and where we don't. I personally think this is not a nice world to live in. As an aside I'm starting to plan a campaign to implement Roslyn support for |
The IVTs fall into four categories for VS for Mac:
|
OK we missed 16.4, can we merge this into |
@KirillOsenkov Can you clarify which of the four categories the Workspaces IVT falls into? |
Thanks, can you move it into the exclusions block and mark it as not loading in Visual Studio? roslyn/src/Workspaces/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj Lines 278 to 293 in 10fab37
|
If it doesn't directly apply to MonoDevelop, you could create a new block with a similar clarifying comment following the example from MonoDevelop. |
src/Workspaces/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj
Outdated
Show resolved
Hide resolved
….csproj Co-Authored-By: Sam Harwell <[email protected]>
@NTaylorMullen