Exclude System.* reference assemblies in ILCompiler.Build.Tasks - #86423

Merged
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695
May 18, 2023
Merged

Exclude System.* reference assemblies in ILCompiler.Build.Tasks#86423
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695

Conversation

@jkotas

Copy link
Copy Markdown
Member

We expect the implementation of these assemblies to come as part of msbuild.

Fixes#83695

We expect the implementation of these assemblies to come as part of msbuild.
Fixesdotnet#83695
@ghostghost assigned jkotasMay 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas
See info in area-owners.md if you want to be subscribed.

Issue Details

We expect the implementation of these assemblies to come as part of msbuild.

Fixes #83695

Author:jkotas
Assignees:-
Labels:

area-NativeAOT-coreclr

Milestone:-

@jkotas

Copy link
Copy Markdown
MemberAuthor

It is not the most robust fix, but I cannot think about anything better that would not be too complicated.

@agockeagocke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good, but I'm not sure why we're getting reference assemblies being copied (per your other comment). This is netstandard2.0, so I would expect that we would get either real assemblies for the non-inbox stuff, or facade assemblies. Why reference assemblies?

@@ -16,6 +16,11 @@
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, SRM should be in the SDK as well. Can we add PrivateAssets here as well?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete CopyLocalLockFileAssemblies property instead.

@agocke

Copy link
Copy Markdown
Member

OK, I think I'm even more confused after thinking about this more.

I previously said S.R.M is in the SDK. I think that's nominally correct -- the MSBuild.deps.json file lists S.R.M as a dependency.

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

But if we're running desktop MSBuild I would presume that we do actually need things like System.Memory and System.Numerics.Vectors. Those are not in-box in 48, are they?

So this kind of leads me back to the original question: why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package. I don't really have an opinion either way on whether we should go in that direction, but I find it notable that System.Memory and System.Numerics.Vectors do appear in the 472 version of their task (and are missing from the netcore version).

@jkotas

jkotas commented May 18, 2023

Copy link
Copy Markdown
MemberAuthor

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

Desktop MSBuild in supported VS versions comes with these System.* assemblies.

 Directory of c:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
05/17/2023 10:57 AM 20,856 System.Buffers.dll
05/17/2023 10:57 AM 198,784 System.Collections.Immutable.dll
05/17/2023 10:57 AM 142,240 System.Memory.dll
05/17/2023 10:57 AM 115,856 System.Numerics.Vectors.dll
05/17/2023 10:57 AM 466,576 System.Reflection.Metadata.dll
05/17/2023 10:57 AM 245,888 System.Reflection.MetadataLoadContext.dll
05/17/2023 10:57 AM 61,568 System.Resources.Extensions.dll
05/17/2023 10:57 AM 18,024 System.Runtime.CompilerServices.Unsafe.dll
05/17/2023 10:57 AM 78,976 System.Text.Encodings.Web.dll
05/17/2023 10:57 AM 582,800 System.Text.Json.dll
05/17/2023 10:57 AM 181,376 System.Threading.Tasks.Dataflow.dll
05/17/2023 10:57 AM 25,984 System.Threading.Tasks.Extensions.dll
05/17/2023 10:57 AM 25,232 System.ValueTuple.dll

We should be able to delete System.Reflection.Metadata and System.Collections.Immutable too. Other msbuild tasks in the repo assume that msbuild comes with good version of these assemblies (e.g. see conversation at #85738 (comment)).

why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

No idea. Publishing of libraries projects has rough edges. I count this as one of the rough edges.

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package.

I do not think we need to do that. We have much smaller support matrix compared to Roslyn (last SDK only, VS versions that have support for the given SDK only), so the current scheme is good enough for us. Also, other tasks in the repo are on the same plan.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failure when building self-hosted NativeAOT compiler changes with 8.0 Preview 2 SDK

3 participants

@jkotas@agocke@sbomer
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Exclude System.* reference assemblies in ILCompiler.Build.Tasks - #86423

Merged
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695
May 18, 2023
Merged

Exclude System.* reference assemblies in ILCompiler.Build.Tasks#86423
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695

Conversation

@jkotas

Copy link
Copy Markdown
Member

We expect the implementation of these assemblies to come as part of msbuild.

Fixes#83695

We expect the implementation of these assemblies to come as part of msbuild.
Fixesdotnet#83695
@ghostghost assigned jkotasMay 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas
See info in area-owners.md if you want to be subscribed.

Issue Details

We expect the implementation of these assemblies to come as part of msbuild.

Fixes #83695

Author:jkotas
Assignees:-
Labels:

area-NativeAOT-coreclr

Milestone:-

@jkotas

Copy link
Copy Markdown
MemberAuthor

It is not the most robust fix, but I cannot think about anything better that would not be too complicated.

@agockeagocke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good, but I'm not sure why we're getting reference assemblies being copied (per your other comment). This is netstandard2.0, so I would expect that we would get either real assemblies for the non-inbox stuff, or facade assemblies. Why reference assemblies?

@@ -16,6 +16,11 @@
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, SRM should be in the SDK as well. Can we add PrivateAssets here as well?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete CopyLocalLockFileAssemblies property instead.

@agocke

Copy link
Copy Markdown
Member

OK, I think I'm even more confused after thinking about this more.

I previously said S.R.M is in the SDK. I think that's nominally correct -- the MSBuild.deps.json file lists S.R.M as a dependency.

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

But if we're running desktop MSBuild I would presume that we do actually need things like System.Memory and System.Numerics.Vectors. Those are not in-box in 48, are they?

So this kind of leads me back to the original question: why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package. I don't really have an opinion either way on whether we should go in that direction, but I find it notable that System.Memory and System.Numerics.Vectors do appear in the 472 version of their task (and are missing from the netcore version).

@jkotas

jkotas commented May 18, 2023

Copy link
Copy Markdown
MemberAuthor

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

Desktop MSBuild in supported VS versions comes with these System.* assemblies.

 Directory of c:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
05/17/2023 10:57 AM 20,856 System.Buffers.dll
05/17/2023 10:57 AM 198,784 System.Collections.Immutable.dll
05/17/2023 10:57 AM 142,240 System.Memory.dll
05/17/2023 10:57 AM 115,856 System.Numerics.Vectors.dll
05/17/2023 10:57 AM 466,576 System.Reflection.Metadata.dll
05/17/2023 10:57 AM 245,888 System.Reflection.MetadataLoadContext.dll
05/17/2023 10:57 AM 61,568 System.Resources.Extensions.dll
05/17/2023 10:57 AM 18,024 System.Runtime.CompilerServices.Unsafe.dll
05/17/2023 10:57 AM 78,976 System.Text.Encodings.Web.dll
05/17/2023 10:57 AM 582,800 System.Text.Json.dll
05/17/2023 10:57 AM 181,376 System.Threading.Tasks.Dataflow.dll
05/17/2023 10:57 AM 25,984 System.Threading.Tasks.Extensions.dll
05/17/2023 10:57 AM 25,232 System.ValueTuple.dll

We should be able to delete System.Reflection.Metadata and System.Collections.Immutable too. Other msbuild tasks in the repo assume that msbuild comes with good version of these assemblies (e.g. see conversation at #85738 (comment)).

why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

No idea. Publishing of libraries projects has rough edges. I count this as one of the rough edges.

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package.

I do not think we need to do that. We have much smaller support matrix compared to Roslyn (last SDK only, VS versions that have support for the given SDK only), so the current scheme is good enough for us. Also, other tasks in the repo are on the same plan.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failure when building self-hosted NativeAOT compiler changes with 8.0 Preview 2 SDK

3 participants

@jkotas@agocke@sbomer
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Exclude System.* reference assemblies in ILCompiler.Build.Tasks - #86423

Merged
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695
May 18, 2023
Merged

Exclude System.* reference assemblies in ILCompiler.Build.Tasks#86423
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695

Conversation

@jkotas

Copy link
Copy Markdown
Member

We expect the implementation of these assemblies to come as part of msbuild.

Fixes#83695

We expect the implementation of these assemblies to come as part of msbuild.
Fixesdotnet#83695
@ghostghost assigned jkotasMay 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas
See info in area-owners.md if you want to be subscribed.

Issue Details

We expect the implementation of these assemblies to come as part of msbuild.

Fixes #83695

Author:jkotas
Assignees:-
Labels:

area-NativeAOT-coreclr

Milestone:-

@jkotas

Copy link
Copy Markdown
MemberAuthor

It is not the most robust fix, but I cannot think about anything better that would not be too complicated.

@agockeagocke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good, but I'm not sure why we're getting reference assemblies being copied (per your other comment). This is netstandard2.0, so I would expect that we would get either real assemblies for the non-inbox stuff, or facade assemblies. Why reference assemblies?

@@ -16,6 +16,11 @@
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, SRM should be in the SDK as well. Can we add PrivateAssets here as well?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete CopyLocalLockFileAssemblies property instead.

@agocke

Copy link
Copy Markdown
Member

OK, I think I'm even more confused after thinking about this more.

I previously said S.R.M is in the SDK. I think that's nominally correct -- the MSBuild.deps.json file lists S.R.M as a dependency.

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

But if we're running desktop MSBuild I would presume that we do actually need things like System.Memory and System.Numerics.Vectors. Those are not in-box in 48, are they?

So this kind of leads me back to the original question: why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package. I don't really have an opinion either way on whether we should go in that direction, but I find it notable that System.Memory and System.Numerics.Vectors do appear in the 472 version of their task (and are missing from the netcore version).

@jkotas

jkotas commented May 18, 2023

Copy link
Copy Markdown
MemberAuthor

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

Desktop MSBuild in supported VS versions comes with these System.* assemblies.

 Directory of c:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
05/17/2023 10:57 AM 20,856 System.Buffers.dll
05/17/2023 10:57 AM 198,784 System.Collections.Immutable.dll
05/17/2023 10:57 AM 142,240 System.Memory.dll
05/17/2023 10:57 AM 115,856 System.Numerics.Vectors.dll
05/17/2023 10:57 AM 466,576 System.Reflection.Metadata.dll
05/17/2023 10:57 AM 245,888 System.Reflection.MetadataLoadContext.dll
05/17/2023 10:57 AM 61,568 System.Resources.Extensions.dll
05/17/2023 10:57 AM 18,024 System.Runtime.CompilerServices.Unsafe.dll
05/17/2023 10:57 AM 78,976 System.Text.Encodings.Web.dll
05/17/2023 10:57 AM 582,800 System.Text.Json.dll
05/17/2023 10:57 AM 181,376 System.Threading.Tasks.Dataflow.dll
05/17/2023 10:57 AM 25,984 System.Threading.Tasks.Extensions.dll
05/17/2023 10:57 AM 25,232 System.ValueTuple.dll

We should be able to delete System.Reflection.Metadata and System.Collections.Immutable too. Other msbuild tasks in the repo assume that msbuild comes with good version of these assemblies (e.g. see conversation at #85738 (comment)).

why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

No idea. Publishing of libraries projects has rough edges. I count this as one of the rough edges.

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package.

I do not think we need to do that. We have much smaller support matrix compared to Roslyn (last SDK only, VS versions that have support for the given SDK only), so the current scheme is good enough for us. Also, other tasks in the repo are on the same plan.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failure when building self-hosted NativeAOT compiler changes with 8.0 Preview 2 SDK

3 participants

@jkotas@agocke@sbomer
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Exclude System.* reference assemblies in ILCompiler.Build.Tasks - #86423

Merged
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695
May 18, 2023
Merged

Exclude System.* reference assemblies in ILCompiler.Build.Tasks#86423
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695

Conversation

@jkotas

Copy link
Copy Markdown
Member

We expect the implementation of these assemblies to come as part of msbuild.

Fixes#83695

We expect the implementation of these assemblies to come as part of msbuild.
Fixesdotnet#83695
@ghostghost assigned jkotasMay 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas
See info in area-owners.md if you want to be subscribed.

Issue Details

We expect the implementation of these assemblies to come as part of msbuild.

Fixes #83695

Author:jkotas
Assignees:-
Labels:

area-NativeAOT-coreclr

Milestone:-

@jkotas

Copy link
Copy Markdown
MemberAuthor

It is not the most robust fix, but I cannot think about anything better that would not be too complicated.

@agockeagocke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good, but I'm not sure why we're getting reference assemblies being copied (per your other comment). This is netstandard2.0, so I would expect that we would get either real assemblies for the non-inbox stuff, or facade assemblies. Why reference assemblies?

@@ -16,6 +16,11 @@
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, SRM should be in the SDK as well. Can we add PrivateAssets here as well?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete CopyLocalLockFileAssemblies property instead.

@agocke

Copy link
Copy Markdown
Member

OK, I think I'm even more confused after thinking about this more.

I previously said S.R.M is in the SDK. I think that's nominally correct -- the MSBuild.deps.json file lists S.R.M as a dependency.

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

But if we're running desktop MSBuild I would presume that we do actually need things like System.Memory and System.Numerics.Vectors. Those are not in-box in 48, are they?

So this kind of leads me back to the original question: why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package. I don't really have an opinion either way on whether we should go in that direction, but I find it notable that System.Memory and System.Numerics.Vectors do appear in the 472 version of their task (and are missing from the netcore version).

@jkotas

jkotas commented May 18, 2023

Copy link
Copy Markdown
MemberAuthor

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

Desktop MSBuild in supported VS versions comes with these System.* assemblies.

 Directory of c:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
05/17/2023 10:57 AM 20,856 System.Buffers.dll
05/17/2023 10:57 AM 198,784 System.Collections.Immutable.dll
05/17/2023 10:57 AM 142,240 System.Memory.dll
05/17/2023 10:57 AM 115,856 System.Numerics.Vectors.dll
05/17/2023 10:57 AM 466,576 System.Reflection.Metadata.dll
05/17/2023 10:57 AM 245,888 System.Reflection.MetadataLoadContext.dll
05/17/2023 10:57 AM 61,568 System.Resources.Extensions.dll
05/17/2023 10:57 AM 18,024 System.Runtime.CompilerServices.Unsafe.dll
05/17/2023 10:57 AM 78,976 System.Text.Encodings.Web.dll
05/17/2023 10:57 AM 582,800 System.Text.Json.dll
05/17/2023 10:57 AM 181,376 System.Threading.Tasks.Dataflow.dll
05/17/2023 10:57 AM 25,984 System.Threading.Tasks.Extensions.dll
05/17/2023 10:57 AM 25,232 System.ValueTuple.dll

We should be able to delete System.Reflection.Metadata and System.Collections.Immutable too. Other msbuild tasks in the repo assume that msbuild comes with good version of these assemblies (e.g. see conversation at #85738 (comment)).

why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

No idea. Publishing of libraries projects has rough edges. I count this as one of the rough edges.

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package.

I do not think we need to do that. We have much smaller support matrix compared to Roslyn (last SDK only, VS versions that have support for the given SDK only), so the current scheme is good enough for us. Also, other tasks in the repo are on the same plan.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failure when building self-hosted NativeAOT compiler changes with 8.0 Preview 2 SDK

3 participants

@jkotas@agocke@sbomer
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Exclude System.* reference assemblies in ILCompiler.Build.Tasks - #86423

Merged
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695
May 18, 2023
Merged

Exclude System.* reference assemblies in ILCompiler.Build.Tasks#86423
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695

Conversation

@jkotas

Copy link
Copy Markdown
Member

We expect the implementation of these assemblies to come as part of msbuild.

Fixes#83695

We expect the implementation of these assemblies to come as part of msbuild.
Fixesdotnet#83695
@ghostghost assigned jkotasMay 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas
See info in area-owners.md if you want to be subscribed.

Issue Details

We expect the implementation of these assemblies to come as part of msbuild.

Fixes #83695

Author:jkotas
Assignees:-
Labels:

area-NativeAOT-coreclr

Milestone:-

@jkotas

Copy link
Copy Markdown
MemberAuthor

It is not the most robust fix, but I cannot think about anything better that would not be too complicated.

@agockeagocke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good, but I'm not sure why we're getting reference assemblies being copied (per your other comment). This is netstandard2.0, so I would expect that we would get either real assemblies for the non-inbox stuff, or facade assemblies. Why reference assemblies?

@@ -16,6 +16,11 @@
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, SRM should be in the SDK as well. Can we add PrivateAssets here as well?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete CopyLocalLockFileAssemblies property instead.

@agocke

Copy link
Copy Markdown
Member

OK, I think I'm even more confused after thinking about this more.

I previously said S.R.M is in the SDK. I think that's nominally correct -- the MSBuild.deps.json file lists S.R.M as a dependency.

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

But if we're running desktop MSBuild I would presume that we do actually need things like System.Memory and System.Numerics.Vectors. Those are not in-box in 48, are they?

So this kind of leads me back to the original question: why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package. I don't really have an opinion either way on whether we should go in that direction, but I find it notable that System.Memory and System.Numerics.Vectors do appear in the 472 version of their task (and are missing from the netcore version).

@jkotas

jkotas commented May 18, 2023

Copy link
Copy Markdown
MemberAuthor

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

Desktop MSBuild in supported VS versions comes with these System.* assemblies.

 Directory of c:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
05/17/2023 10:57 AM 20,856 System.Buffers.dll
05/17/2023 10:57 AM 198,784 System.Collections.Immutable.dll
05/17/2023 10:57 AM 142,240 System.Memory.dll
05/17/2023 10:57 AM 115,856 System.Numerics.Vectors.dll
05/17/2023 10:57 AM 466,576 System.Reflection.Metadata.dll
05/17/2023 10:57 AM 245,888 System.Reflection.MetadataLoadContext.dll
05/17/2023 10:57 AM 61,568 System.Resources.Extensions.dll
05/17/2023 10:57 AM 18,024 System.Runtime.CompilerServices.Unsafe.dll
05/17/2023 10:57 AM 78,976 System.Text.Encodings.Web.dll
05/17/2023 10:57 AM 582,800 System.Text.Json.dll
05/17/2023 10:57 AM 181,376 System.Threading.Tasks.Dataflow.dll
05/17/2023 10:57 AM 25,984 System.Threading.Tasks.Extensions.dll
05/17/2023 10:57 AM 25,232 System.ValueTuple.dll

We should be able to delete System.Reflection.Metadata and System.Collections.Immutable too. Other msbuild tasks in the repo assume that msbuild comes with good version of these assemblies (e.g. see conversation at #85738 (comment)).

why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

No idea. Publishing of libraries projects has rough edges. I count this as one of the rough edges.

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package.

I do not think we need to do that. We have much smaller support matrix compared to Roslyn (last SDK only, VS versions that have support for the given SDK only), so the current scheme is good enough for us. Also, other tasks in the repo are on the same plan.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failure when building self-hosted NativeAOT compiler changes with 8.0 Preview 2 SDK

3 participants

@jkotas@agocke@sbomer
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Exclude System.* reference assemblies in ILCompiler.Build.Tasks - #86423

Merged
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695
May 18, 2023
Merged

Exclude System.* reference assemblies in ILCompiler.Build.Tasks#86423
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695

Conversation

@jkotas

Copy link
Copy Markdown
Member

We expect the implementation of these assemblies to come as part of msbuild.

Fixes#83695

We expect the implementation of these assemblies to come as part of msbuild.
Fixesdotnet#83695
@ghostghost assigned jkotasMay 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas
See info in area-owners.md if you want to be subscribed.

Issue Details

We expect the implementation of these assemblies to come as part of msbuild.

Fixes #83695

Author:jkotas
Assignees:-
Labels:

area-NativeAOT-coreclr

Milestone:-

@jkotas

Copy link
Copy Markdown
MemberAuthor

It is not the most robust fix, but I cannot think about anything better that would not be too complicated.

@agockeagocke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good, but I'm not sure why we're getting reference assemblies being copied (per your other comment). This is netstandard2.0, so I would expect that we would get either real assemblies for the non-inbox stuff, or facade assemblies. Why reference assemblies?

@@ -16,6 +16,11 @@
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, SRM should be in the SDK as well. Can we add PrivateAssets here as well?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete CopyLocalLockFileAssemblies property instead.

@agocke

Copy link
Copy Markdown
Member

OK, I think I'm even more confused after thinking about this more.

I previously said S.R.M is in the SDK. I think that's nominally correct -- the MSBuild.deps.json file lists S.R.M as a dependency.

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

But if we're running desktop MSBuild I would presume that we do actually need things like System.Memory and System.Numerics.Vectors. Those are not in-box in 48, are they?

So this kind of leads me back to the original question: why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package. I don't really have an opinion either way on whether we should go in that direction, but I find it notable that System.Memory and System.Numerics.Vectors do appear in the 472 version of their task (and are missing from the netcore version).

@jkotas

jkotas commented May 18, 2023

Copy link
Copy Markdown
MemberAuthor

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

Desktop MSBuild in supported VS versions comes with these System.* assemblies.

 Directory of c:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
05/17/2023 10:57 AM 20,856 System.Buffers.dll
05/17/2023 10:57 AM 198,784 System.Collections.Immutable.dll
05/17/2023 10:57 AM 142,240 System.Memory.dll
05/17/2023 10:57 AM 115,856 System.Numerics.Vectors.dll
05/17/2023 10:57 AM 466,576 System.Reflection.Metadata.dll
05/17/2023 10:57 AM 245,888 System.Reflection.MetadataLoadContext.dll
05/17/2023 10:57 AM 61,568 System.Resources.Extensions.dll
05/17/2023 10:57 AM 18,024 System.Runtime.CompilerServices.Unsafe.dll
05/17/2023 10:57 AM 78,976 System.Text.Encodings.Web.dll
05/17/2023 10:57 AM 582,800 System.Text.Json.dll
05/17/2023 10:57 AM 181,376 System.Threading.Tasks.Dataflow.dll
05/17/2023 10:57 AM 25,984 System.Threading.Tasks.Extensions.dll
05/17/2023 10:57 AM 25,232 System.ValueTuple.dll

We should be able to delete System.Reflection.Metadata and System.Collections.Immutable too. Other msbuild tasks in the repo assume that msbuild comes with good version of these assemblies (e.g. see conversation at #85738 (comment)).

why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

No idea. Publishing of libraries projects has rough edges. I count this as one of the rough edges.

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package.

I do not think we need to do that. We have much smaller support matrix compared to Roslyn (last SDK only, VS versions that have support for the given SDK only), so the current scheme is good enough for us. Also, other tasks in the repo are on the same plan.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failure when building self-hosted NativeAOT compiler changes with 8.0 Preview 2 SDK

3 participants

@jkotas@agocke@sbomer
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Exclude System.* reference assemblies in ILCompiler.Build.Tasks - #86423

Merged
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695
May 18, 2023
Merged

Exclude System.* reference assemblies in ILCompiler.Build.Tasks#86423
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695

Conversation

@jkotas

Copy link
Copy Markdown
Member

We expect the implementation of these assemblies to come as part of msbuild.

Fixes#83695

We expect the implementation of these assemblies to come as part of msbuild.
Fixesdotnet#83695
@ghostghost assigned jkotasMay 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas
See info in area-owners.md if you want to be subscribed.

Issue Details

We expect the implementation of these assemblies to come as part of msbuild.

Fixes #83695

Author:jkotas
Assignees:-
Labels:

area-NativeAOT-coreclr

Milestone:-

@jkotas

Copy link
Copy Markdown
MemberAuthor

It is not the most robust fix, but I cannot think about anything better that would not be too complicated.

@agockeagocke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good, but I'm not sure why we're getting reference assemblies being copied (per your other comment). This is netstandard2.0, so I would expect that we would get either real assemblies for the non-inbox stuff, or facade assemblies. Why reference assemblies?

@@ -16,6 +16,11 @@
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, SRM should be in the SDK as well. Can we add PrivateAssets here as well?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete CopyLocalLockFileAssemblies property instead.

@agocke

Copy link
Copy Markdown
Member

OK, I think I'm even more confused after thinking about this more.

I previously said S.R.M is in the SDK. I think that's nominally correct -- the MSBuild.deps.json file lists S.R.M as a dependency.

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

But if we're running desktop MSBuild I would presume that we do actually need things like System.Memory and System.Numerics.Vectors. Those are not in-box in 48, are they?

So this kind of leads me back to the original question: why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package. I don't really have an opinion either way on whether we should go in that direction, but I find it notable that System.Memory and System.Numerics.Vectors do appear in the 472 version of their task (and are missing from the netcore version).

@jkotas

jkotas commented May 18, 2023

Copy link
Copy Markdown
MemberAuthor

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

Desktop MSBuild in supported VS versions comes with these System.* assemblies.

 Directory of c:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
05/17/2023 10:57 AM 20,856 System.Buffers.dll
05/17/2023 10:57 AM 198,784 System.Collections.Immutable.dll
05/17/2023 10:57 AM 142,240 System.Memory.dll
05/17/2023 10:57 AM 115,856 System.Numerics.Vectors.dll
05/17/2023 10:57 AM 466,576 System.Reflection.Metadata.dll
05/17/2023 10:57 AM 245,888 System.Reflection.MetadataLoadContext.dll
05/17/2023 10:57 AM 61,568 System.Resources.Extensions.dll
05/17/2023 10:57 AM 18,024 System.Runtime.CompilerServices.Unsafe.dll
05/17/2023 10:57 AM 78,976 System.Text.Encodings.Web.dll
05/17/2023 10:57 AM 582,800 System.Text.Json.dll
05/17/2023 10:57 AM 181,376 System.Threading.Tasks.Dataflow.dll
05/17/2023 10:57 AM 25,984 System.Threading.Tasks.Extensions.dll
05/17/2023 10:57 AM 25,232 System.ValueTuple.dll

We should be able to delete System.Reflection.Metadata and System.Collections.Immutable too. Other msbuild tasks in the repo assume that msbuild comes with good version of these assemblies (e.g. see conversation at #85738 (comment)).

why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

No idea. Publishing of libraries projects has rough edges. I count this as one of the rough edges.

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package.

I do not think we need to do that. We have much smaller support matrix compared to Roslyn (last SDK only, VS versions that have support for the given SDK only), so the current scheme is good enough for us. Also, other tasks in the repo are on the same plan.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failure when building self-hosted NativeAOT compiler changes with 8.0 Preview 2 SDK

3 participants

@jkotas@agocke@sbomer
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Exclude System.* reference assemblies in ILCompiler.Build.Tasks - #86423

Merged
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695
May 18, 2023
Merged

Exclude System.* reference assemblies in ILCompiler.Build.Tasks#86423
jkotas merged 3 commits into
dotnet:mainfrom
jkotas:issue-83695

Conversation

@jkotas

Copy link
Copy Markdown
Member

We expect the implementation of these assemblies to come as part of msbuild.

Fixes#83695

We expect the implementation of these assemblies to come as part of msbuild.
Fixesdotnet#83695
@ghostghost assigned jkotasMay 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas
See info in area-owners.md if you want to be subscribed.

Issue Details

We expect the implementation of these assemblies to come as part of msbuild.

Fixes #83695

Author:jkotas
Assignees:-
Labels:

area-NativeAOT-coreclr

Milestone:-

@jkotas

Copy link
Copy Markdown
MemberAuthor

It is not the most robust fix, but I cannot think about anything better that would not be too complicated.

@agockeagocke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good, but I'm not sure why we're getting reference assemblies being copied (per your other comment). This is netstandard2.0, so I would expect that we would get either real assemblies for the non-inbox stuff, or facade assemblies. Why reference assemblies?

@@ -16,6 +16,11 @@
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" PrivateAssets="all" ExcludeAssets="runtime" />
<PackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataVersion)" />

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, SRM should be in the SDK as well. Can we add PrivateAssets here as well?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete CopyLocalLockFileAssemblies property instead.

@agocke

Copy link
Copy Markdown
Member

OK, I think I'm even more confused after thinking about this more.

I previously said S.R.M is in the SDK. I think that's nominally correct -- the MSBuild.deps.json file lists S.R.M as a dependency.

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

But if we're running desktop MSBuild I would presume that we do actually need things like System.Memory and System.Numerics.Vectors. Those are not in-box in 48, are they?

So this kind of leads me back to the original question: why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package. I don't really have an opinion either way on whether we should go in that direction, but I find it notable that System.Memory and System.Numerics.Vectors do appear in the 472 version of their task (and are missing from the netcore version).

@jkotas

jkotas commented May 18, 2023

Copy link
Copy Markdown
MemberAuthor

But presumably if we're running the desktop MSBuild, that will not load the MSBuild from the SDK.

Desktop MSBuild in supported VS versions comes with these System.* assemblies.

 Directory of c:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
05/17/2023 10:57 AM 20,856 System.Buffers.dll
05/17/2023 10:57 AM 198,784 System.Collections.Immutable.dll
05/17/2023 10:57 AM 142,240 System.Memory.dll
05/17/2023 10:57 AM 115,856 System.Numerics.Vectors.dll
05/17/2023 10:57 AM 466,576 System.Reflection.Metadata.dll
05/17/2023 10:57 AM 245,888 System.Reflection.MetadataLoadContext.dll
05/17/2023 10:57 AM 61,568 System.Resources.Extensions.dll
05/17/2023 10:57 AM 18,024 System.Runtime.CompilerServices.Unsafe.dll
05/17/2023 10:57 AM 78,976 System.Text.Encodings.Web.dll
05/17/2023 10:57 AM 582,800 System.Text.Json.dll
05/17/2023 10:57 AM 181,376 System.Threading.Tasks.Dataflow.dll
05/17/2023 10:57 AM 25,984 System.Threading.Tasks.Extensions.dll
05/17/2023 10:57 AM 25,232 System.ValueTuple.dll

We should be able to delete System.Reflection.Metadata and System.Collections.Immutable too. Other msbuild tasks in the repo assume that msbuild comes with good version of these assemblies (e.g. see conversation at #85738 (comment)).

why are there ref assemblies of those DLLs in the output? Shouldn't those be actual DLLs that are loaded only on desktop FX?

No idea. Publishing of libraries projects has rough edges. I count this as one of the rough edges.

Looking at Roslyn, they eventually moved to multi-targeting the task, for a variety of reasons, but one of them was this kind of confusion about what needed to be included in the package.

I do not think we need to do that. We have much smaller support matrix compared to Roslyn (last SDK only, VS versions that have support for the given SDK only), so the current scheme is good enough for us. Also, other tasks in the repo are on the same plan.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failure when building self-hosted NativeAOT compiler changes with 8.0 Preview 2 SDK

3 participants

@jkotas@agocke@sbomer