text:
Allow to proxy from HTTPS to HTTP

Is there an existing issue for this?

[x] I have searched the existing issues

Is your feature request related to a problem? Please describe the problem.
When using .WithHttpEndpoint() Aspire automatically proxies, from an HTTP endpoint to target HTTP endpoint.
When using .WithHttpsEndpoint() Aspire automatically proxies from an HTTPS endpoint to target HTTP endpoint. In this scenario, it leverages .NET dev cert, which is trusted, a nice to have when working with web apps locally, so the user doesn't get security alerts.
However, there is no way to have an HTTPS endpoing proxying to a target HTTP endpoint. For instance, when serving a web site and working with OAuth, one might need to use HTTPS.
On Azure, the platform takes care of proxying from HTTPS to HTTP.
Aspire doesn't offer the same, so one has to implement SSL locally with custom certs, to be created and configured, leading to more work. Another approach is spinning up, only locally, a reverse proxy app/container like stunnel, grok, and similar, to do that, something like this:
var httpApp = builder
                 .AddProject<MyApp>()
                 .WithHttpEndpoint();

var httpsApp = builder.AddProject<Proxy>()
                 .WithEnvironment("TARGET_ENDPOINT", httpApp.GetEndpoint("http"))
                 .WithHttpsEndpoint();

Describe the solution you'd like
Allow to map from HTTPS to HTTP, something like
var httpsApp = builder
                 .AddProject<MyApp>()
                 .WithHttpsEndpoint(httpsTarget = false); // the internal endpoint will be http://...

This way, the HTTPS endpoint will leverage .NET dev cert, and the internal endpoint is a simple HTTP endpoint that doesn't require and SSL configuration.

The proxying that Aspire does during the local dev inner loop today is TCP-level, not HTTP level, so it can't easily proxy from HTTPS to HTTP. There are other issues covering HTTP ingress and better support for HTTPS using the dev cert though that would likely improve your scenario:

#5508
#836
#4319
#5453
#6890

authors: DamianEdwards dluc

repo: dotnet/aspire


text:
Swagger show wrong OData QueryOptions

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug
I used Asp.Versioning.OData.ApiExplorer 8.1.0 AddODataApiExplorer with the following configuration:

Program.cs
builder.Services.AddControllers().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
    options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString;
}).AddOData(opts =>
{
    opts.EnableNoDollarQueryOptions = false;
});

builder.Services.AddApiVersioning().AddOData(opts =>
{
    opts.ModelBuilder.DefaultModelConfiguration = (builder, apiVersion, routePrefix) =>
    {
        builder.EntitySet<Experiment>("Experiments");
    };
    opts.AddRouteComponents("api/v{version:apiVersion}");
}).AddODataApiExplorer(opts =>
{
    opts.GroupNameFormat = "'v'VVV";
    opts.FormatGroupName = (group, version) => $"{group} - {version}";
    opts.SubstituteApiVersionInUrl = true;
});

ExperimentsController

[ApiVersion(1.0)]
public class ExperimentsController : ODataController
{
    // dependencies...

    [EnableQuery(MaxTop = 1000, AllowedQueryOptions = Select | Skip | Top | Count)]
    public IActionResult Get()
    {
        return Ok(_db.Experiments);
    }
}

I did not configure QueryOption globally, nor did I use a specific convention model configuration. I only used EnableQuery, but the $skip and $top parameters are not displayed in Swagger, and $count cannot be used.
I tried add $skip=1&$top=1 to query string by curl in terminal, and response say The limit of '0' for Top query has been exceeded
Expected Behavior
I hope to be able to use $count as defined in EnableQuery and have the $select, $top, and $skip parameters correctly worked.
Steps To Reproduce
No response
Exceptions (if any)
No response
.NET Version
8.0.401
Anything else?
No response

This is almost certainly an external issue with OData itself. Let's start by reviewing #944, which also has a deep link over to the OData repo where I outline the issue further.
Ultimately, the API Explorer extensions only document OData query options. It doesn't change anything about how they work. The Litmus test is trying to get it working without API Versioning. I suspect in this case, it will not work. I've tried to provide comprehensive examples to show working OData combinations, which aren't always straight forward.
If you find that $top does work as expected, but then fails when you add API Versioning and/or it's API Explorer extensions, then it's worth taking a deeper look. I have a strong feeling, this is a simple OData misconfiguration.
As I recall, you must do one of the following for [EnableQuery] to take effect:

Enable global query options
Use Model Bound query settings via:

Attributes declared on your model (ex: [Select], [Page], etc)
Conventions defined via the ODataModelBuilder (ex: .Select(...), .Page(...), etc)

This is almost certainly an external issue with OData itself. Let's start by reviewing #944, which also has a deep link over to the OData repo where I outline the issue further.
Ultimately, the API Explorer extensions only document OData query options. It doesn't change anything about how they work. The Litmus test is trying to get it working without API Versioning. I suspect in this case, it will not work. I've tried to provide comprehensive examples to show working OData combinations, which aren't always straight forward.
If you find that $top does work as expected, but then fails when you add API Versioning and/or it's API Explorer extensions, then it's worth taking a deeper look. I have a strong feeling, this is a simple OData misconfiguration.
As I recall, you must do one of the following for [EnableQuery] to take effect:

Enable global query options

Use Model Bound query settings via:

Attributes declared on your model (ex: [Select], [Page], etc)
Conventions defined via the ODataModelBuilder (ex: .Select(...), .Page(...), etc)

I update OData configuration and $top and $skip working, but still not appear in Api Explorer
builder.Services.AddControllers().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
    options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString;
}).AddOData(opts =>
{
+   options.Count().Select().Expand().OrderBy().SetMaxTop(null);
    opts.EnableNoDollarQueryOptions = false;
});

I created a minimalistic repo project to reproduce this.

source: gharchive/issue

authors: commonsensesoftware fissssssh

repo: dotnet/aspnet-api-versioning

license: MIT

license_type: permissive

license_source: github-api


text:
Update mscorlib.csproj path

@chenkennt

LGTM

source: gharchive/pull-request

authors: chenkennt qinezh

repo: dotnet/core-docs


text:
Fedora install docs one line wrong

Problem encountered on https://dotnet.microsoft.com/download/linux-package-manager/fedora28/sdk-current
Operating System: Linux Fedora 28 - x64.
Same for Fedora 27 instructions.
Should be dnf check-update not dnf update.

Is it useful to have a dnf update/dnf check-update line at all? When I run through the Fedora install steps, I skip this command entirely and it has worked fine for me. My usage of Fedora is very narrow, however, maybe there's some common configuration that makes it necessary.
I suspect the dnf update line is there because it seems analogous to the apt-get update step from Ubuntu (but it isn't).
/cc @leecow

check-update can be run without sudo and only refreshes the local package db. update requires sudo and will install all discovered updates. For the use case we are covering here, I think check-update is the better choice.

Why is it useful to run dnf check-update in this scenario?

This could be a faulty assumption on my part. I know apt searches the local package db to determine if something is available and if it's not found, simply says so. apt-get update refreshes the local db and then updates can be found.

Yeah, dnf install has no qualms about fetching info from remote repositories to find what things are available where. This works fine:
docker run -it --rm fedora:28 bash -c '
  dnf install -y wget
  rpm --import https://packages.microsoft.com/keys/microsoft.asc
  wget -q -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/27/prod.repo
  dnf install -y dotnet-sdk-2.2
  dotnet --info'

@dagood @leecow it looks like this is still the instruction given today; does a change need to be made here or can we close the issue?

I would suggest it needs to change otherwise it's instructing people to update their entire system.
--
Peter Stevenson (2E0PGS)
http://www.m3pgs.co.uk
On 30 Sep 2019, 18:22, at 18:22, Cory Nelson notifications@github.com wrote:

@dagood @leecow it looks like this is still the instruction given
today; does a change need to be made here or can we close the issue?
--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/dotnet/core/issues/3291#issuecomment-536662325

Agreed. Filed an internal issue to maybe get more visibility on removing the dnf update, yum update, and zypper update steps, which are along the same lines.

Merged the change to remove update from the rpm-based instructions. Should be live in about 20 minutes.

authors: 2E0PGS dagood leecow scalablecory

repo: dotnet/core


text:
Decimal GetHashCode() not always equal for different number of tailing 0

var a = 1000.250000000000000000m;
var b = 1000.25000000000000000000m;
a == b
true
a.GetHashCode() == b.GetHashCode()
false
a.GetHashCode()
-1083130353
b.GetHashCode()
1083130368

Reproduced on .NET Core 2.2 and Windows 10

It only appear to happen to very specific number of tailing zeros:

1000.25000000000000000000m.GetHashCode()
1083130368
1000.2500000000000000000m.GetHashCode()
1083130368
1000.250000000000000000m.GetHashCode()
-1083130353
1000.25000000000000000m.GetHashCode()
1083130368
1000.2500000000000000m.GetHashCode()
1083130368
1000.250000000000000m.GetHashCode()
1083130368
1000.25000000000000m.GetHashCode()
1083130368
1000.2500000000000m.GetHashCode()
1083130368
1000.250000000000m.GetHashCode()
1083130368
1000.25000000000m.GetHashCode()
1083130368
1000.2500000000m.GetHashCode()
1083130368
1000.250000000m.GetHashCode()
1083130368
1000.25000000m.GetHashCode()
1083130368
1000.2500000m.GetHashCode()
1083130368
1000.250000m.GetHashCode()
1083130368
1000.25000m.GetHashCode()
1083130368
1000.2500m.GetHashCode()
1083130368
1000.250m.GetHashCode()
1083130368

Transferring to the corefx repo for higher visibility.

authors: carlossanlop miloszu


text:
NET 5 - dotnet new not working on OpenSuse Tumbleweed

NET 5 dotnet new not working on OpenSuse Tumbleweed
General
Just installed on OpenSuse and try
dotnet new mvc -o MvcMovie

on Debian dotnet new does not list any templates. and If I try to do for example: dotnet new console -o "Miguel" it errors out

@wli3 @dsplaisted is this something the CLI team can help with?


text:
I typed in dotnet new console in vscode but didn't recognise it

Problem encountered on https://dotnet.microsoft.com/en-us/learn/dotnet/hello-world-tutorial/install
Operating System: windows
Provide details about the problem you're experiencing. Include your operating system version, exact error message, code sample, and anything else that is relevant.

I made a file and set it in vscode. Started a terminal typed dotnet new console and vscode didn't recognise it.


text:
Issue while creating webapi using dotnet core

Problem encountered on https://dotnet.microsoft.com/en-us/learn/aspnet/microservice-tutorial/create
Operating System: windows
Provide details about the problem you're experiencing. Include your operating system version, exact error message, code sample, and anything else that is relevant.
C:\Users\10269177\MyMicroservice\MyMicroservice.csproj : error NU1101: Unable to find package Microsoft.AspNetCore.OpenApi. No packages exist with this id in source(s): Mi
crosoft Visual Studio Offline Packages
C:\Users\10269177\MyMicroservice\MyMicroservice.csproj : error NU1101: Unable to find package Swashbuckle.AspNetCore. No packages exist with this id in source(s): Microsof
t Visual Studio Offline Packages

Those packages exist on NuGet, I guess your internet connection have had issue, please check your internet connection and run these commands:
dotnet add package Microsoft.AspNetCore.OpenApi --version 7.0.1
dotnet add package Swashbuckle.AspNetCore --version 6.4.0

I have the same issue. I attempt to add the package and receive this error:
error: NU1101: Unable to find package Microsoft.AspNetCore.OpenApi. No packages exist with this id in source(s): C:\Program Files\dotnet\library-packs, Microsoft Visual Studio Offline Packages
Is there a way to have the command search online instead of offline?

The error message seems to indicate that is trying to find the package on the offline packages. Maybe try adding NuGet as a source?
run dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org then dotnet restore

I'm getting this error from following this tutorial
https://dotnet.microsoft.co/m/en-us/learn/aspnet/microservice-tutorial/create
I believe it should just work

I just replied to the issue you opened @captix. That happens when your nuget source got misconfigured. Let's follow up on the new issue. You try setting the source via command-line like shown above or via VS UI.

authors: buyaa-n captix mairaw vijayvishwakarma xazos79


text:
Adding Binary Reader perf test for reading structs and reversing endianness

It is almost 5x better to Read once and Reverse each field rather than reading one field at a time for a 12 field struct.

Renamed ReverseEndianness to Reverse and made them extension methods.
Removed UnsafeUtilities.

cc @dotnet/corefxlab-contrib

Number of   Fields
ReadAndReverse
ReadFieldByField
Ratio

3
0.9011
1.3390
1.486

6
1.5694
2.0663
1.317

12
3.0530
16.9419
5.549

All the bounds checks cost, don't they? :-) Reverse does not have any bounds checks. Read does.

If you want to merge the test, go ahead. It looks good. But it might be worth adding a comparison to BitConverter.

All the bounds checks cost, don't they? :-) Reverse does not have any bounds checks. Read does.

It is also the BitConvert.LittleEndian if/else check which only occurs once if you use Read<T> and then Reverse each field rather than ReadEndian... on each field.

If you want to merge the test, go ahead. It looks good. But it might be worth adding a comparison to BitConverter.

For the endianness swapping routines, does it make sense to call the BSWAP x86 intrinsic if available? I'm not sure what optimizations the JITter is able to do on our behalf.

For the endianness swapping routines, does it make sense to call the BSWAP x86 intrinsic if available? I'm not sure what optimizations the JITter is able to do on our behalf.

There is already an issue opened related to this: https://github.com/dotnet/coreclr/issues/14122
From previous PR: https://github.com/dotnet/corefxlab/pull/1772#discussion_r140376081

@KrzysztofCwalina, good to go?

It is interesting though that these Reverse APIs are 2-3x faster than the NetworkToHostOrder APIs (for Int32 and Int64

They are using naive layered cake implementation (Int32 method calls Int16 method). It is easy to see that there is a bunch of unnecessary extra operations with this approach.
Could you please submit PR to corefx to change these methods to the streamlined implementation you have here?

Also, the mask on the highest order part is not necessary - the bits will be shifted out for free. This:
return (value & 0x000000FF) << 24 |
should be just:
return (value << 24) |

And this:
(int)(((uint)value & 0xFF000000) >> 24);
should be just:
((uint)value >> 24);
for the same reason.

I think we can do faster here. So for a ulong we can swap the first 4 bytes, then swap each short inside the int and finally flip the bytes.  So say for ulong I get (measure reverse is your function run in corefxlabs in release mode, and the ulong is the same but with a ulong instead of an int).

Test
AVERAGE
STDEV.S
MIN
MAX

MeasureReverse
196.745
8.810
187.388
232.469

MeasureReverse2
177.338
8.354
169.954
211.146

MeasureUlongReverse
358.954
11.486
343.930
394.239

MeasureUlongReverse2
284.049
9.004
271.679
304.954

The code for the ulong looks something like this
public static ulong Reverse2(this ulong value)
{
    value = (value << 32) | (value >> 32);
    value = (value & 0x0000FFFF0000FFFF) << 16 | (value & 0xFFFF0000FFFF0000) >> 16;
    value = (value & 0x00FF00FF00FF00FF) << 8 | (value & 0xFF00FF00FF00FF00) >> 8;
    return value;
}

public static uint Reverse2(this uint value)
{
            value = (value << 16) | (value >> 16);
            value = (value & 0x00FF00FF) << 8 | (value & 0xFF00FF00) >> 8;
            return value;
}

Finally for the "reverse" test I was lazy and just did this for int and long
public static int Reverse2(this int value) => (int)Reverse2((uint)value);

public static long Reverse2(this long value) => (long)Reverse2((ulong)value);

I put in a PR to change corefx at the same time.

Intermittent Pipelines.Extensions test failure:
https://ci.dot.net/job/dotnet_corefxlab/job/master/job/windows_nt_debug_prtest/763/console
14:42:07 The active test run was aborted. Reason: Unhandled Exception: System.IO.Pipelines.Networking.Libuv.Interop.UvException: Error -4082 EBUSY resource busy or locked
14:42:07    at System.IO.Pipelines.Networking.Libuv.Interop.Uv.ThrowError(Int32 statusCode) in D:\j\workspace\windows_nt_de---4b678204\src\System.IO.Pipelines.Networking.Libuv\Interop\Uv.cs:line 79
14:42:07    at System.IO.Pipelines.Networking.Libuv.Interop.Uv.ThrowIfErrored(Int32 statusCode) in D:\j\workspace\windows_nt_de---4b678204\src\System.IO.Pipelines.Networking.Libuv\Interop\Uv.cs:line 70
14:42:07    at System.IO.Pipelines.Networking.Libuv.Interop.Uv.loop_close(UvLoopHandle handle) in D:\j\workspace\windows_nt_de---4b678204\src\System.IO.Pipelines.Networking.Libuv\Interop\Uv.cs:line 108
14:42:07    at System.IO.Pipelines.Networking.Libuv.Interop.UvLoopHandle.ReleaseHandle() in D:\j\workspace\windows_nt_de---4b678204\src\System.IO.Pipelines.Networking.Libuv\Interop\UvLoopHandle.cs:line 42
14:42:07    at System.Runtime.InteropServices.SafeHandle.InternalDispose()
14:42:07    at System.IO.Pipelines.Networking.Libuv.UvThread.RunLoop() in D:\j\workspace\windows_nt_de---4b678204\src\System.IO.Pipelines.Networking.Libuv\UvThread.cs:line 85
14:42:07    at System.IO.Pipelines.Networking.Libuv.UvThread.OnStart(Object state) in D:\j\workspace\windows_nt_de---4b678204\src\System.IO.Pipelines.Networking.Libuv\UvThread.cs:line 63
14:42:07    at System.Threading.Thread.ThreadMain_ParameterizedThreadStart(Object parameter)
14:42:07    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
cc @pakrym
@dotnet-bot test Innerloop Windows_NT Debug Build and Test

authors: Drawaes GrabYourPitchforks KrzysztofCwalina ahsonkhan jkotas

repo: dotnet/corefxlab

license: mit

license_source: bigquery


text:
WIP - Enabling GVM target resolution (hookup work)

Proposed changes to enable GVM resolution.
Using JIT prototype changes from commit  b3e7f914381ecff5cc22c1fc75df22818d602b24

expecting CI to fail without the proper JIT changes

@davidwrighton @MichalStrehovsky Could you guys please take a final look? These are the final changes (no longer WIP), using the updated JIT changes that support GVM lookups.

@fadimounir Could you unblock the tests in CoreCLR.issues.targets under "Generic virtual methods" that are now passing and rebucket/create issues for stuff that doesn't?

@MichalStrehovsky yes I'm planning on enabling/triaging GVM tests in CoreCLR.issues.targets

authors: MichalStrehovsky fadimounir

repo: dotnet/corert


text:
Add support for RuntimeMethodHandle of a generic method definition

This is actually two fixes:

Support for reading/writing ldtoken method of a generic method
definition (only really doable from IL, so not a big deal, but I need it
elsewhere)
Support for generating and reading a dynamic RuntimeMethodHandle for
a generic method definition (MethodBase.get_MethodHandle of a generic
method definition). We were generating a RuntimeMethodHandle, but it
was a handle to something weird that wasn't roudtrippable.

Both cases basically represent these as something with a null
instantiation now.

@davidwrighton @fadimounir Please take a look.
I verified this by stepping through the debugger and it seems to be doing the right things. Did I miss anything?

(I'm going to update the ldtoken method IL test in CoreCLR repo to also test the generic definition case.)

Why do we need to support ldtoken for generic method definitions now? (as opposed to ProjectN for example where we never needed it before).

    public unsafe RuntimeMethodHandle GetRuntimeMethodHandleForComponents(RuntimeTypeHandle declaringTypeHandle, IntPtr methodName, RuntimeSignature methodSignature, RuntimeTypeHandle[] genericMethodArgs)

Same... add an assert + comment

Refers to: src/System.Private.TypeLoader/src/Internal/Runtime/TypeLoader/TypeLoaderEnvironment.LdTokenResultLookup.cs:301 in 19d4eb6. [](commit_id = 19d4eb6cc69534181471e9a1b5bcad3820f031b5, deletion_comment = False)

Why do we need to support ldtoken for generic method definitions now? (as opposed to ProjectN for example where we never needed it before).

Because it's a valid thing to do in IL and makes for a very efficient implementation of MethodBase.GetCurrentMethod(). On Project N, I had to cut corners and implement GetCurrentMethod() on top of the instantiated thing (only to uninstantiate it right before returning it to the user). That's both more costly in terms of size (we get no sharing) and runtime performance (need to do more useless work).

    private unsafe bool TryGetDynamicRuntimeMethodHandleComponents(RuntimeMethodHandle runtimeMethodHandle, out RuntimeTypeHandle declaringTypeHandle, out MethodNameAndSignature nameAndSignature, out RuntimeTypeHandle[] genericMethodArgs)

Did you search for all the usages of these APIs and the TryGetDynamicRuntimeMethodHandleForComponents APIs to make sure the semantics of a null genericMethodArgs is correct?

Refers to: src/System.Private.TypeLoader/src/Internal/Runtime/TypeLoader/TypeLoaderEnvironment.LdTokenResultLookup.cs:354 in 19d4eb6. [](commit_id = 19d4eb6cc69534181471e9a1b5bcad3820f031b5, deletion_comment = False)

Could you add a small unit test to DynamicGenerics (at least using the Reflection APIs)?

I have a regression test for the dynamic case on the TFS side ready for checking in once we merge to nmirror. I also did some additional validation from the TFS side that convinced me this is complete now.


text:
Add option to root all application assemblies

This is similar to the option IL Linker exposes.
I'm also tweaking the RD.XML rooting logic (that this new root provider calls into) to attempt to root generic types as well, if possible.

Do you plan to mention these options in the docs somewhere to make them discoverable?

Do you plan to mention these options in the docs somewhere to make them discoverable?

Yep, I have a doc about reflection in CoreRT in general in the works.

authors: MichalStrehovsky jkotas


text:
Additional changes to make CPAOT getCallInfo more similar to Crossgen

After Simon forked away getCallInfo for CPAOT, we landed in a
better position to steer further away from the RyuJit version.
I have split the method getCallInfo into two parts corresponding
to CoreCLR CEEInfo::getCallInfo vs. ZapInfo::getCallInfo and
I refactored the methods to be as similar to their Crossgen
counterparts as possible.
I have also forked embedGenericHandle because its implementation
is differs somewhat between CoreRT and Crossgen. Similarly I had
to provide a separate implementation for
TryResolveConstraintMethodApprox and
ComputeRuntimeLookupForSharedGenericToken.
As part of this effort I had to generalize local method imports
to distinguish between the actual compiled method and its logical
view in the import cell as a shareable instantiated or generic
method may end up in multiple import cells corresponding to
different type parameters or to different values of the
isInstantiatingStub flag.
As a slight cleanup I have also unified parameter ordering such
that, for methods accepting the unboxing / instantiating stub flags
and the signature context, the signature context always goes last.
Thanks
Tomas
P.S. There seems to be a bit of an overlap between Simon's most
recent PR and mine. I assume Simon's change should go in first
and I'll rebase my change after resolving the conflict.
P.P.S. Based on Michal's advice I have also removed the method
ShadowConcreteMethod that is no longer used in CPAOT.
P.P.P.S. This change seems to be fixing about 200 Pri#1 tests.

I have split the method getCallInfo into two parts corresponding to CoreCLR CEEInfo::getCallInfo vs. ZapInfo::getCallInfo

While I understand the motivation (we can just line-by-line rewrite the crossgen parts into CPAOT without having to understand what the code is doing), doing this generally results in code that is harder to read. Crossgen has this structure because it allows to share code with JIT (we call into getCallInfo implementation for JIT and then tweak the result for R2R). We don't have such requirement and doing this in a single pass is more readable and performant.
I'm not going to block on this since this is a business decision, not a technical one (prefer code being written fast, without having to build an understanding of it, and pay the maintenance cost of a legacy codebase over time),

This will be much easier to reason about when SxS debugging with Crossgen - thanks!

I have pushed my current local changes - fix for the incorrect devirtualization issue Simon pointed out at today meeting and one other fix for cross-module inlining of non-versionable methods. I'm still investigating the release bug.

[rebased against upstream/master]

authors: MichalStrehovsky nattress trylek


text:
Integer not integral

Under value types-simple types it says signed and unsigned integral which I assume is supposed to say integer.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b9770af4-de82-7034-a56b-c68a6b5c55e5
Version Independent ID: 6bd64fcc-5c84-e541-12f4-0cdcfe4f5dd2
Content: C# Types and Variables - A tour of the C# language
Content Source: docs/csharp/tour-of-csharp/types-and-variables.md
Product: dotnet-csharp
GitHub Login: @BillWagner
Microsoft Alias: wiwagn

Seems that this is a consequent choice throughout the document. Why? Are integers called integrals in C#?

Integral type is a computer science terminology. An integer is an integral type.

Some topics on this:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/types#integral-types
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/integral-types-table

authors: NextTurn glooms mairaw

repo: dotnet/docs


text:
Incosistencies of const Style in the Docs

I've been trying to find the convention over how to name const, and I'm lost a little bit.
In the Constants document uses a variable called (on the programming guide, which I think is worse):
class Calendar1
{
    public const int months = 12;
}

But then in other articles we see it like this:
static class Constants
{
    public const double Pi = 3.14159;
    public const int SpeedOfLight = 300000; // km per sec.
}
class Program
{
    static void Main()
    {
        double radius = 5.3;
        double area = Constants.Pi * (radius * radius);
        int secsFromSun = 149476000 / Constants.SpeedOfLight; // in km
    }
}

There's even an article that mixes lower case constants variable names with camelcase... What is it? And why do we teach new programmers the absolute no-no way (lowercase)?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b2987a60-6760-a4f4-69cc-10ad3c38a0cc
Version Independent ID: 1a416e9b-73cf-f2bd-cb5d-5acf6bf4f805
Content: Constants - C# Programming Guide
Content Source: docs/csharp/programming-guide/classes-and-structs/constants.md
Product: dotnet-csharp
GitHub Login: @BillWagner
Microsoft Alias: wiwagn

We should provide a link to the CoreFx coding style guide for this and other style issues.
I've added this to our backlog, and assigned the "up for grabs" label.

Great thank you @BillWagner I've been facing issues with new C# developers completely lost on coding style I'll be sending that link to them!

Hi,
can someone close this issue? this is resolved.

authors: BillWagner igorgue mariombaltazar


text:
Commanets are misleading

"ByVal does not prevent changing the value of a field or property."
ByVal actually DOES prevent changing the value of a field or property (as seen clearly in output).
"ByVal does prevent changing the value of c1 itself."
ByVal actually does NOT prevent changing the value of c1 itself (as seen clearly in output).

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 3085184c-671d-92b5-b596-3af0a848b7c8
Version Independent ID: 4b8973b8-47df-64cd-98ff-5b3ea17860cf
Content: ByVal (Visual Basic)
Content Source: docs/visual-basic/language-reference/modifiers/byval.md
Product: dotnet-visualbasic
GitHub Login: @KathleenDollard
Microsoft Alias: kdollard

@lucius-the Hello. Reading through the code and the output it seems to be correct.
I've added some remarks:
' THRAKA: At this poiint c1.Field is 5
    ' ByVal does not prevent changing the value of a field or property.
    ChangeFieldValue(c1)
' THRAKA: The method has modified c1.Field to 500. ByVal didn't prevent that.
    Console.WriteLine(c1.Field)
    ' Output: 500

' THRAKA: At this poiint c1.Field is 500 from the previous method call
    ' ByVal does prevent changing the value of c1 itself.
    ChangeClassReference(c1)
' THRAKA: The method call above changed the reference in the method to a new object. That did not affect this reference, c1.
    Console.WriteLine(c1.Field)
    ' Output: 500

authors: Thraka lucius-the


text:
Ubuntu

Is there a version of .Net Framework for Ubuntu?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: bf46f86d-940f-3d1b-a83c-6ced0ead20bb
Version Independent ID: 56305860-d431-de58-1503-cdf57e4814b5
Content: Install the .NET Framework developer pack or redistributable
Content Source: docs/framework/install/guide-for-developers.md
Product: dotnet-framework
Technology: dotnet-install
GitHub Login: @adegeo
Microsoft Alias: adegeo

@jgedri Mono is an implementation of .NET Framework for Linux. However, we recommend all new code be written in .NET 5 as it's the latest version of .NET and is built for cross-platform use.

authors: adegeo jgedri


text:
Document intended / best practice for code signing in a .NET context

Help us make content visible
Search terms used: "code signing".
Results were about strong naming, or .NET API containing "Sign".
Describe the new article
Rationale:
The new article would document the use of code signing in a .NET context.
With .NET Framework, this was easy - you could use the SignFile task in MSBuild to sign your assemblies.
However, that task is apparently intended for ClickOnce only (requires the ClickOnce SDK and runs only on Windows), so it is not usable using just a .NET SDK. The only alternative is to try and determine the location for a signtool.exe (a tool which sadly does not seem easy to deploy separately) and using it (made harder because a .NET SDK build does not seem to get the Windows SDK-related properties set).
So it certainly looks like applying code signing to assembly DLLs is not an intended scenario, given there is a complete lack of support for it in the SDK.
What does seem to be handled by the SDK is signing NuGet packages. That makes it seem like the intended / best practice is to sign the NuGet package and not the individual assemblies.
It would be useful to have an article in the documentation making this clear. Note: this does not necessarily have to be a new article; a section in an existing related article would be fine too, as long as a search for "code signing" then easily finds it.
As for location, that seems less obvious. "Deployment Models" might work given that it also has a page on package creation. But DevOps might also work (given that code signing will typically happen as part of a release pipeline).
Abstract:
The best practices for code signing in a .NET context.
Outline:

What is code signing?
Code signing in traditional Windows development
This could refer to https://docs.microsoft.com/en-us/windows-hardware/drivers/install/authenticode, for example (and/or parts of it could be reused for the "What is code signing?" above.
I assume there may be a similar page related to Windows Installers, given that .msi files are almost always signed to avoid a warning dialog.
Code signing in a .NET context

ClickOnce
Installed applications (which I would expect simply means signing the .msi just like for traditional Windows apps)
NuGet packages
...

Related to #29982.

Related to #29982.

Only a little - this is specifically not about strong naming but about code signing ("AuthentiCode").

authors: Zastai gewarren


text:
Option --check-only isn't listed as an available option

Type of issue
Missing information
Description
Hello,
In the Description it is mentioned a --check-only options that exist but isn't listed in the Options section.
Page URL
https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-new-update
Content source URL
https://github.com/dotnet/docs/blob/main/docs/core/tools/dotnet-new-update.md
Document Version Independent Id
aa21de56-b0c8-0fc3-ec75-6f310ae0dec6
Article author
@tdykstra
Metadata

ID: aae4b99c-452e-fd3d-4bb5-4d9961212fbd
Service: dotnet-fundamentals

@gravity00 Thanks for reporting this oversight, I'm adding the option to the Options section now.


text:
link to mstoolsfordocker is broken

"To see more about installing Visual Studio Tools for Docker, go to http://aka.ms/vstoolsfordocker and "
This link gives a fancy 404 page, with the message "The requested extension '0f5b2caa-ea00-41c8-b8a2-058c7da0b3e4' doesn't exist."

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: bcf20f50-2d15-1744-386d-1d05ff9931fb
Version Independent ID: b07f881a-4b4e-9db5-9eb6-c83cf0fba6b2
Content: Using Visual Studio Tools for Docker (Visual Studio on Windows)
Content Source: docs/standard/containerized-lifecycle-architecture/design-develop-containerized-apps/visual-studio-tools-for-docker.md
Product: dotnet
GitHub Login: @CESARDELATORRE
Microsoft Alias: wiwagn

Thank you for letting us know @GregHDC about the broken link. @CESARDELATORRE @SteveLasker you guys seem to be the owners of that aka.ms link. Can you please update it?

authors: GregHDC mairaw


text:
The LINQ to XML link links to “previous version” documentation

When I follow the link to LINQ to XML in this document, I enter the “previous version” style documentation with this header:
>  We're no longer updating this content regularly. Check the Microsoft Product Lifecycle for information about how this product, service, technology, or API is supported.
I shouldn’t be linked to previous versions documentation which has this warning when browsing the current version of the documentation.
It looks like the target page links to the C# and VB.net versions of the LINQ to XML guides. There should be a “current version” version of that landing page and it should be linked from this page instead of the “previous version” one.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0e4e006a-3b84-bc10-377b-aa5d1ca02e04
Version Independent ID: 4f022102-f171-5ff2-cc3d-a6247f83643f
Content: XML Processing Options
Content Source: docs/standard/data/xml/xml-processing-options.md
Product: dotnet
GitHub Login: @mairaw
Microsoft Alias: mairaw

Thanks for your feedback @binki. This issue touches on a lot of migration efforts that are going on at the moment.
The most relevant related issue would be the following: https://github.com/dotnet/docs/issues/4728. Once we add that new set of docs, then the links would be revised with that effort.

This was fixed by PR #10683, which added a link to the C# guide and one to the VB guide. Once we finish the work for #4728, we'll get the links updated to go to the new single target.

authors: binki mairaw


text:
Update interpolated-strings.md

Remove reference to C# conditional expression (age == 1 ? "" : "s" which can't be used in VB as written (the VB version has no colon so the problem of needing to escape it via parentheses goes away).

Many thanks for following up @BillWagner, much appreciated :+1:


text:
Update VS for Mac tutorial unit testing guidance

Fixes #1770

@mairaw Ready for a 2nd :eye:. We may still need to fix a few more things. I'm not sure about ending with the link to the release notes; however, I do like the detailed nature of their notes. Compared to the marketing site, the release notes tell me what that IDE can really do.

@GuardRex Can you fix the merge conflicts with a rebase?  Then, @mairaw and I will review again.

@BillWagner Done 👍

@mairaw Done! :+1:

@mairaw Fixed. :+1: ... the other one is ready for a final pass, too, when ur free: https://github.com/dotnet/docs/pull/2356

authors: BillWagner GuardRex


text:
[WIP] Aggregate Canonical Functions topic layout update

Fixes #2738
Mostly adjusting the inline code elements of the table and fixing the broken table.

Ready for :eyes:

I see what u mean. I'm going tooooo fast trying to get back to my mop-up list. I'll take care of it.

@rpetrusha Alright ... cook'in with gas now. Try this version (internal reviewers). External reviewers should use the PR diff.

This looks really good, @GuardRex. I'll merge it now.

authors: GuardRex rpetrusha


text:
Interpolated strings quickstart: Addressed issue 42 in dotnet/try repo

Interpolated strings quickstart: Addressed issue 42 in dotnet/try repo
Fixes dotnet/try#42
//cc @LouieInSeattle @BillWagner

Issue 83 you mean?

authors: mairaw rpetrusha


text:
RaftCluster odd behavior when implementing your own IPersistentState

Hey :)
I have run into the requirement to make my own IPersistentState implementation and that has worked out alright so far until I wanted to add snapshot / log compaction support.
I have spent the whole day debugging the source code to trace down what is happening and I feel like I am either overlooking something or there is a logic flaw.
Let's start of wit the experiment setup:

I am using the latest develop source (but this happend on the beta nuget-packages as well)
I start a cluster with one member who becomes leader and is ready to accept work
During the IPersistentState init or at any point before someone else joins a snapshot entry is put into the log. e.g the cluster ran for a while and had entries for index 1-500 (0 is never used). The snapshot combines 1-500 into a snapshot log entry at index 500 - essentially taking the place of the last log entry it represents. All log entries with an index < than 500 are dropped.
I start a follower to ask the leader to add him through AddMemberAsync
The follower is being added and replication runs
The follower is successfully replicated and his presence is suggested as new member configuration
... so far so good, but here the fun begins.

I based my implementation on what I saw in ConsensusOnlyState - but what I saw in the PersistentState seemed to be the same in what is to come.
From what I understand and read in the source the process intends for the catch-up rounds to take place and then the member is added. During this catch-up the is a variable member.NextIndex that represents the next log index to be sent. Eventually this number is larger than what is actually in the leader log, so he starts to send nothing (heartbeats).
What I would have expected is for the member to be passed into the leader state and continue his existence with the known member.NextIndex. But I checked the vanilla implementations and this information is forgotten. Why?
As very first step after being part of the normal leader state the member will start at member.NextIndex == 0 and the leader must read his log, to fetch all entries from 0 - auditTrail.LastUncommittedEntryIndex and send them over to the already caught-up follower. I have not seen anything in this regard that my IPersistentState could have affected.
Now that is the first problem / question. Why does he do the catch-up to forget where the member was at and have to find out again.
By itself, this would not be much of an issue - just waste of performance (if there is no algorithmic necessity - which I don't know).
What is a big problem for me is getting snapshots to work with this. I do not understand why they work for the existing state machines but not for mine. The leader will refetch the entire log ... and this log contains my snapshot. By their nature the snapshots of course always come first in the log. So in my setup the snapshot that is present on the leader at index 500 (representing index 1-500) sits there together with a log entry at index 501 (the leader who has elected himself in the empty cluster) and the new member config for the joining follower at 502.
The ILogEntryConsumer.ReadAsync<TEntryImpl, TList> function that is doing the reading on my log wants a parameter long? snapshotIndex. I understood this parameter as "if your first entry in the range to be read is represented by a snapshot, return the snapshot index here" - and this seems to be backed up by the source that checks for snapshotIndex.HasValue and then only even cares about entries[0 (LeaderState.Replication.cs ReadAsync<TEntry, TList>)
So here is the problem. My log contains [Snapshot(500), EmptyLogEntry(501), EmptyLogEntry(502)] and since the leader forgot where the follower was at, he asks for 0-end. This list contains / starts with a snapshot so I return the snapshot and put 500 as snapshotIndex parameter. Now the caller logic thinks "oh I need to call member.InstallSnapshotAsync(term, entries[0], currentIndex, token) - which is ok - but this will 100% of the time fail ... because the follower already has this snapshot installed. He got all the data in the catch-up rounds. So this bit of code running on the follower rejects every attempt from the leader to sync this snapshot:
RaftCluster.cs Line 396ff
    protected async Task<Result<bool>> InstallSnapshotAsync<TSnapshot>(ClusterMemberId sender, long senderTerm, TSnapshot snapshot, long snapshotIndex, CancellationToken token)
        where TSnapshot : notnull, IRaftLogEntry
    {
        using var tokenSource = token.LinkTo(LifecycleToken);
        using var transitionLock = await transitionSync.AcquireAsync(token).ConfigureAwait(false);
        var currentTerm = auditTrail.Term;

        //snapshotIndex > auditTrail.LastCommittedEntryIndex WILL NEVER BE TRUE!!!!!!!!
        if (snapshot.IsSnapshot && senderTerm >= currentTerm && snapshotIndex > auditTrail.LastCommittedEntryIndex)
        {
            Timestamp.Refresh(ref lastUpdated);
            await StepDown(senderTerm).ConfigureAwait(false);
            Leader = TryGetMember(sender);
            await auditTrail.AppendAsync(snapshot, snapshotIndex, token).ConfigureAwait(false);
            return new(currentTerm, true);
        }

        return new(currentTerm, false);
    }

So a snapshot can not be installed, even though it already was in the past, but if I can't install the snapshot the rest of the data will not sync and the member.NextIndex remains 0 for ever. If I do not mark my snapshot as such in the  ILogEntryConsumer.ReadAsync<TEntryImpl, TList> it arrives as regular log entry and my logic has no idea it was supposed to be a snapshot and applies it again - destroying my local data - because this snapshot was technically already installed once.
If I don't return the snapshot index, its treated as normal entry and my log has no idea that snapshot exists. If I declare it a proper snapshot, it can never get in sync after the catch-up because that already installed the snapshot.
So my question is ... is this a bug? I am too stupid to implement IPersistentState correclty? Did I miss some docs or missunderstood Raft? I mean this must be working for the file based state machines, but I could not figure out what they do differently.
In my code I accept all Append overloads into a single handler and it does this check
if (entry.IsSnapshot)
{
    //A snapshot must be received first in order, and it wipes any state that came before it.
    _highestLogTerm.VolatileWrite(entry.Term);
    _highestLogIndex.VolatileWrite(startIndex);
    _commitedLogIndex.VolatileWrite(startIndex);
    _commitEvent.Set(true);
}
else
{
    //Increment index for latest log entry appended
    _highestLogIndex.VolatileWrite(startIndex);
}

I saw this in the ConsensusOnlyState. I think it should be technically correct to update the log index, commit index, and term to what is presented by a snapshot supplied to AppendAsync since those must have been committed already in the past.
My idea would be for the leader state to not forget the member.NextIndex as then he would not attempt to sync the snapshot or anything else again. If that can not be changed then the InstallSnapshotAsync logic should maybe check for auditTrail.LastCommittedEntryIndex >= snapshotIndex and return success? ... but I guess that might destory something because this is also used to override outdated data on a partitioned follower that connects again?
I am not sure ... It would be very very nice to get some feedback on what is going on / what I am doing wrong. I have been sitting on this for the last 10 hours straight and can't figure it out.
Sorry for the wall of text (yet again) 🍪
Thanks!
PS: I have attached some of my source if you need to have a look, its full of debug lines by now Raft.zip

@Arkensor , thanks for such a detailed investigation. In short, this behavior can be considered as a bug. We need to assume that newly added member is in sync with the leader (or at least close to that state). In this case, NextIndex must be set to LastUncommittedEntryIndex + 1 as it done in catch-up procedure. The leader later can easily detect that this assumption is wrong and decrements NextIndex down to the correct index when the member will respond with success.
The fix is trivial and requires just one line of code.

@sakno thank you for quickly looking into this. I have applied your edit from 36bff69 to my local debug code and now the process behaves as expected.
I'd be grateful if you could push this fix as updated beta nuget package soon, so I can switch back to my normal project setup without having to build all the source as well :)

@Arkensor , I'm expecting to release 4.2.0 today or tomorrow. Anyway, if the release will be delayed for some reason I'll make a new beta release.

authors: Arkensor sakno

repo: dotnet/dotNext


text:
Managed Prometheus scraping in Aks has timestamp error

Enable Managed Prometheus integration in an Aks Cluster.
Follow https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/prometheus-metrics-scrape-configuration#configmaps to create a pod level scraper against dotnet-monitor's /metrics endpoint.
Check the prometheus targets using https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/prometheus-metrics-troubleshoot#prometheus-interface

Notice that the dotnet-monitor target has the following error:

inconsistent timestamps on metric points for metric

Note that the error repros with a 30s or 1m scraping interval and a 5-second metrics interval.
Workaround:
Configure Metrics__Count to be 1.

Having same issue.
I had to set Metrics__Count to 1 and scrape interval to 5s

authors: ajay-sainy wiktork

repo: dotnet/dotnet-monitor


text:
The "model builder" need to delete twice from Solution Explorer.

System Information (please complete the following information):

Model Builder Version:
Visual Studio Version

Describe the bug

Need to delete twice, the "Machine Learning" can be deleted from Solution Explorer.

To Reproduce
Steps to reproduce the behavior:

Create new console app with .Net 5.0;
Add Model builder by right click on the project;
Click delete by right click the model builder;
Model builder appear again under the project;
Delete again, that can be deleted.

Expected behavior
no need to delete twice.

@LittleLittleCloud Can you take a look here?

#1394

I've tried to reproduce it on latest main but failed... Maybe it's already been fixed by perf improvements PRs.

This issue not occurs on main branch: 16.5.25.2127401

authors: LittleLittleCloud beccamc vzhuqin

repo: dotnet/machinelearning-modelbuilder


text:
RZ2012: False positive for different Blazor binding syntaxes

Ran into two false positives for RZ2012.
Case @bind-Value
Component.razor
[Parameter, EditorRequired]
public bool Value { get; set; }

[Parameter, EditorRequired]
public EventCallback<bool> ValueChanged { get; set; }

Page.razor
<Component @bind-Value="@_value" />

This will trigger the RZ2012 error for ValueChanged.
Case @bind-Value:get & @bind-Value:set
Component.razor
[Parameter, EditorRequired]
public bool Value { get; set; }

[Parameter, EditorRequired]
public EventCallback<bool> ValueChanged { get; set; }

Page.razor
<Component @bind-Value:get="@_value"
           @bind-Value:set="@SetAsync" />

This will trigger the RZ2012 error for both Value and ValueChanged.

@jjonescz Looks related to the work you did in this space https://github.com/dotnet/razor/pull/8337
Can you take a look? Thanks!

authors: chsienki igotinfected

repo: dotnet/razor


text:
Syntax highlighting breaks on @code blocks when the nullable shorthand operator is used on a property in Blazor.

Is this a Bug or Feature request?:
Bug
Steps to reproduce
Add a Question mark (?) after a property within an @code block which has a { get; set; } directive:
private TableData DataTable;
private TableData? DataTable; works fine.
private TableData DataTable { get; set; } -- Works fine
private TableData? DataTable {get; set; } -- Breaks syntax highlighting
Description of the problem:
------------------- Please fill in this section -------------------------
Expected behavior:
Syntax highlighting should be retained as per normal.
Actual behavior:
Syntax highlighting breaks from the point of he addition of a ?
Logs
OmniSharp
------------------- Please fill in this section -------------------------
To find the OmniSharp log, open VS Code's "Output" pane, then in the dropdown choose "OmniSharp Log".
Razor
Expand

[Client - 11:39:21] -- Starting Issue Data Collection--
[Client - 11:39:26] -- Stopping Issue Data Collection--

Workspace information
Razor document:
Expand

@page "/Screens"
@using Lib.Components
@using Lib.Components.Enums
@using Lib.Components.Models

@* <PageTitle>Screens</PageTitle>

<DataTable RowsPerPage=50 Data=@DataTable DefaultSort=3 /> *@

@code
{
    private TableData? DataTable { get; set; };
    protected override void OnParametersSet()
    {
        base.OnParametersSet();
    }
}

Projected CSharp document:
Expand

////////////////////// Projected CSharp as seen by extension ///////////////////////
// <auto-generated/>
#pragma warning disable 1591
namespace __GeneratedComponent
{
    #line hidden
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Components;
#nullable restore
#line 2 "d:/Projects/Array/Web/Pages/Screens.razor"
using Lib.Components;

#line default
#line hidden
#nullable disable
#nullable restore
#line 3 "d:/Projects/Array/Web/Pages/Screens.razor"
using Lib.Components.Enums;

#line default
#line hidden
#nullable disable
#nullable restore
#line 4 "d:/Projects/Array/Web/Pages/Screens.razor"
using Lib.Components.Models;

#line default
#line hidden
#nullable disable
    [Microsoft.AspNetCore.Components.RouteAttribute("/Screens")]
    public partial class AspNetCore_c6f31080cbf1a230b3798c0cb0171fec68b81197 : Microsoft.AspNetCore.Components.ComponentBase
    {
        #pragma warning disable 219
        private void __RazorDirectiveTokenHelpers__() {
        ((System.Action)(() => {
#nullable restore
#line 1 "d:/Projects/Array/Web/Pages/Screens.razor"
global::System.Object __typeHelper = "/Screens";

#line default
#line hidden
#nullable disable
        }
        ))();
        }
        #pragma warning restore 219
        #pragma warning disable 0414
        private static System.Object __o = null;
        #pragma warning restore 0414
        #pragma warning disable 1998
        protected override void BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder)
        {
#nullable restore
#line 12 "d:/Projects/Array/Web/Pages/Screens.razor"

    private TableData? DataTable { get; set; ;
    protected override void OnParametersSet()
    {
        base.OnParametersSet();
    }
}

#line default
#line hidden
#nullable disable

        }
        #pragma warning restore 1998
    }
}
#pragma warning restore 1591

////////////////////// Projected CSharp as seen by VSCode ///////////////////////
// <auto-generated/>
#pragma warning disable 1591
namespace __GeneratedComponent
{
    #line hidden
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Components;
#nullable restore
#line 2 "d:/Projects/Array/Web/Pages/Screens.razor"
using Lib.Components;

#line default
#line hidden
#nullable disable
#nullable restore
#line 3 "d:/Projects/Array/Web/Pages/Screens.razor"
using Lib.Components.Enums;

#line default
#line hidden
#nullable disable
#nullable restore
#line 4 "d:/Projects/Array/Web/Pages/Screens.razor"
using Lib.Components.Models;

#line default
#line hidden
#nullable disable
    [Microsoft.AspNetCore.Components.RouteAttribute("/Screens")]
    public partial class AspNetCore_c6f31080cbf1a230b3798c0cb0171fec68b81197 : Microsoft.AspNetCore.Components.ComponentBase
    {
        #pragma warning disable 219
        private void __RazorDirectiveTokenHelpers__() {
        ((System.Action)(() => {
#nullable restore
#line 1 "d:/Projects/Array/Web/Pages/Screens.razor"
global::System.Object __typeHelper = "/Screens";

#line default
#line hidden
#nullable disable
        }
        ))();
        }
        #pragma warning restore 219
        #pragma warning disable 0414
        private static System.Object __o = null;
        #pragma warning restore 0414
        #pragma warning disable 1998
        protected override void BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder)
        {
#nullable restore
#line 12 "d:/Projects/Array/Web/Pages/Screens.razor"

    private TableData? DataTable { get; set; ;
    protected override void OnParametersSet()
    {
        base.OnParametersSet();
    }
}

#line default
#line hidden
#nullable disable

        }
        #pragma warning restore 1998
    }
}
#pragma warning restore 1591

// 2

Projected Html document:
Expand

////////////////////// Projected Html as seen by extension ///////////////////////
~~~~~ ~~~~~~~~~~
~~~~~~ ~~~~~~~~~~~~~~~~
~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~

~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~ ~~

~~~~~
~
    ~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~ ~ ~~~~ ~~~~ ~
    ~~~~~~~~~ ~~~~~~~~ ~~~~ ~~~~~~~~~~~~~~~~~
    ~
        ~~~~~~~~~~~~~~~~~~~~~~~
    ~
~
    ~~    ~~~~~~~~~
     ~~~~~~~~~ ~ ~~~ ~~~~~~~~~
    ~
        ~~~~~~~ ~ ~~~ ~~~~~~~~~~~~~~~~~~~~~
        ~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~~~ ~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~~ ~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~ ~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~ ~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~ ~~~~~~ ~ ~~~~ ~~
            ~~~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~ ~~~~~~ ~ ~~~~ ~
        ~~
        ~~~~ ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~
        ~
            ~~~~~~ ~~~~~~~~~~~ ~ ~~~
            ~~~~~~~~~~~~~~~~
            ~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
            ~
            ~~~~~~ ~~~ ~~~~~~~~~~~~
            ~
                ~~~~~~~ ~ ~~~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ ~~~ ~~~~ ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ ~~~ ~~~~ ~~~~~~~~~~ ~~~~~~~~~~~ ~~
                ~~~~~~~~~~ ~ ~~ ~~
                ~
                    ~~~~~~~~~~~~~~ ~ ~~~~~
                    ~~~~~~~~~~~~~~~ ~ ~~~~~~
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                ~
            ~~
        ~~~~~~~~~~~
~
~~~~~~~~~
    ~
        ~~~~~~~ ~ ~~~ ~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~~~ ~~

////////////////////// Projected Html as seen by VSCode ///////////////////////
~~~~~ ~~~~~~~~~~
~~~~~~ ~~~~~~~~~~~~~~~~
~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~

~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~ ~~

~~~~~
~
    ~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~ ~ ~~~~ ~~~~ ~
    ~~~~~~~~~ ~~~~~~~~ ~~~~ ~~~~~~~~~~~~~~~~~
    ~
        ~~~~~~~~~~~~~~~~~~~~~~~
    ~
~
    ~~    ~~~~~~~~~
     ~~~~~~~~~ ~ ~~~ ~~~~~~~~~
    ~
        ~~~~~~~ ~ ~~~ ~~~~~~~~~~~~~~~~~~~~~
        ~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~~~ ~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~~ ~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~ ~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~ ~~~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~ ~~~~~~ ~ ~~~~ ~~
            ~~~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~ ~~~~~~ ~ ~~~~ ~
        ~~
        ~~~~ ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~
        ~
            ~~~~~~ ~~~~~~~~~~~ ~ ~~~
            ~~~~~~~~~~~~~~~~
            ~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~ ~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
                ~~~~~~~~
                    ~~~~~~~~~~~ ~ ~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    ~~~~~~
            ~
            ~~~~~~ ~~~ ~~~~~~~~~~~~
            ~
                ~~~~~~~ ~ ~~~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ ~~~ ~~~~ ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ ~~~ ~~~~ ~~~~~~~~~~ ~~~~~~~~~~~ ~~
                ~~~~~~~~~~ ~ ~~ ~~
                ~
                    ~~~~~~~~~~~~~~ ~ ~~~~~
                    ~~~~~~~~~~~~~~~ ~ ~~~~~~
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                ~
            ~~
        ~~~~~~~~~~~
~
~~~~~~~~~
    ~
        ~~~~~~~ ~ ~~~ ~~~ ~~
            ~~~ ~~~~~~~~~~~~~~~ ~ ~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~ ~ ~~~~~~~~ ~~
// 2

Machine information
VSCode version: 1.70.0
Razor.VSCode version: 1.25.0
dotnet --info
Expand

.NET SDK (reflecting any global.json):
 Version:   6.0.302
 Commit:    c857713418

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.19042
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\6.0.302\

global.json file:
  Not found

Host:
  Version:      6.0.7
  Architecture: x64
  Commit:       0ec02c8c96

.NET SDKs installed:
  5.0.300 [C:\Program Files\dotnet\sdk]
  6.0.101 [C:\Program Files\dotnet\sdk]
  6.0.201 [C:\Program Files\dotnet\sdk]
  6.0.302 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 5.0.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 5.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 6.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 5.0.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 6.0.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 6.0.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Download .NET:
  https://aka.ms/dotnet-download

Learn about .NET Runtimes and SDKs:
  https://aka.ms/dotnet/runtimes-sdk-info

Extensions
Expand

Extension
Author
Version

asp-net-core-switcher
fragcys
2.0.2

aspnetcorerazor-html-css-class-completion
kevin-chatham
1.0.3

auto-using
Fudge
0.7.15

blazor-snippet-pack
adrianwilczynski
2.6.1

blazorwasm-companion
ms-dotnettools
1.1.0

csharp
ms-dotnettools
1.25.0

csharp-colors
logerfo
0.1.8

data-workspace-vscode
ms-mssql
0.2.2

mssql
ms-mssql
1.15.0

remote-containers
ms-vscode-remote
0.245.0

remote-wsl
ms-vscode-remote
0.66.3

rest-client
humao
0.25.0

sql-bindings-vscode
ms-mssql
0.2.1

sql-database-projects-vscode
ms-mssql
0.17.2

tabsanity
jedmao
0.0.11

vscode-docker
ms-azuretools
1.22.1

vscode-dotnet-auto-attach
DennisMaxJung
1.1.1

vscode-dotnet-runtime
ms-dotnettools
1.5.0

vsliveshare
ms-vsliveshare
1.0.5683

Duplicate of https://github.com/dotnet/razor/issues/6631.

authors: allisonchou saerich


text:
Remove tooling MvcShims

Thanks to recent changes made by @jjonescz, this pull request moves lots of unused and unnecessary code from tooling, getting rid of MvcShims in the tooling layer.
Due to the number of files change, I strongly recommend reviewing commit by commit.

@dotnet/razor-compiler: I'm going to go ahead and merge this PR. It doesn't contain any production code changes and just removes code that the compiler doesn't use anymore.


text:
Use IProjectSnapshotManagerAccessor rather than requesting IProjectSnapshotManager as a Roslyn language service

This change avoids requesting IProjectSnapshotManager from the Roslyn workspace in a few more places.

The threading changes don't completely make sense to me, but in a way that this looks right and the previous usage of main thread looks wrong.

Thank you very much for noticing that! I had fully intended to mention that in the PR description but forgot!


text:
Hide the targetframework selection option for projects which have multiple targetframeworks defined.

@srivatsn @davkean @dotnet/project-system

This is temporary right? I ask because this property can show up in other UI context, and the correct way to do this is to mark the property as missing or read-only. We shouldn't be coupling the pages into the logic of when or when a property is able to be edited - that's up to the project system.

yes , temporary fix till we figure out #800
Discussed with @davkean , looks like we will need a dynamic way to hide/mark a property as readonly in CPS, if we want to provide a better temporary fix for scenarios like this.

authors: davkean jinujoseph

repo: dotnet/roslyn-project-system


text:
Improve prebuilt baselining: warn on error by default, save all project.assets.json

A few improvements to prebuilt baselining: #770, #774.

@dotnet-bot test RHEL7.2 Tarball Release
No idea what caused this, retrying in case it's flaky. Would be nice to have https://github.com/Microsoft/msbuild/issues/1038. error MSB4166: Child node "3" exited prematurely.

This location can be changed by setting the MSBUILDDEBUGPATH environment variable to a different directory.

Wonder if it's worth adding this variable in repos/dir.props?

I'll add that to this PR, definitely worth it if it works.

authors: crummel dagood

repo: dotnet/source-build


text:
Error while using "System.Deployment.Application.ApplicationDeployment.CurrentDeployment.ActivationUri.Query"

Hi,
After I upgraded my project from ".Net Framework 4.8" to "net6.0-windows" using the command (upgrade-assistant upgrade --target-tfm-support Preview MySol.sln), I am getting below error
"Error	BC30456	'Deployment' is not a member of 'System'"  for below line
Dim QueryString As String = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.ActivationUri.Query
Please let me know, if more details are required.

System.Deployment is not supported in core, you should have seen a warning message calling this out while you were upgrading the project with upgrade-assistant upgrade . Please do let us know if the warning did not show up in your log.txt.

Thanks for prompt reply.
I didn't see any Warning in the Log.txt, it only shows the "Info" only. Also, if System.Deployment is not supported in core, would you please suggest me the alternate option?

Also, if System.Deployment is not supported in core, would you please suggest me the alternate option?

Unfortunately there isnt any supported way to use system.deployment in .net 5, there are some workarounds mentioned in the issue by members of the community, you could try the same if that suits your scenario - https://github.com/dotnet/deployment-tools/issues/53

Closing this issue, since there is no action item for UA to provide here.

Does anyone know why the developers of .NET5 and .NET6 are still refusing to put ActivationUri somewhere or even explain any other way to access it?
We all have to ship a 4.7.2 ClickOnce app with a packaged .NET 5 app included, just to do
var uri = ApplicationDeployment.CurrentDeployment.ActivationUri
process.start("theNet5App.exe", "--uri" +uri )
Which is so silly.

authors: NikolaosWakem sunandabalu sunilforever

repo: dotnet/upgrade-assistant


text:
🛑 Allhours.com is down

In e9298a1, Allhours.com (https://www.allhours.com/) was down:

HTTP code: 502
Response time: 554 ms

Resolved: Allhours.com is back up in a16da15 after 30 minutes.

repo: dotsi/bitamiuptime


text:
Pas de retour à 0 des capteurs de présence

Les capteurs de présence n'envoie pas de retour à 0
Il faut le faire manuellement apres un temps d'expiration

Bonjour,
Tout d'abord merci pour votre plugin, cela m'a permis de commencer de jouer avec ma Zigate et mes modules Xiaomi.
Je constate le même problème sur le capteur de présence, la valeur retournée est systématiquement 1.
Comment est-il possible de le faire manuellement ?
Merci.

Le problème sera résolu prochainement
Voir https://github.com/doudz/zigate/issues/4

Corrigé

authors: bforest doudz

repo: doudz/jeedom-plugin-zigate


text:
Invalid API Key when GetAllAccounts

Hi, I've generated the api key on gdax selecting all permission

The call to GetAllAccountsAsync returns "Invalid API Key".
But (for example) call to GetProductOrderBookAsync forks fine.
I missing something? Thanks

I'm in sandbox.

great.
last I tried the sandbox should still work with this call. Just make sure the ordering of the parameters you are passing in are correct.

repo: dougdellolio/gdax-csharp


text:
🛑 DD is down

In 089b4f6, DD (https://dougdragon.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DD is back up in d92228a.

repo: dougdragon/uptime


text:
Adding footer component

Hi @douglasjunior, thanks for the amazing lib. What about creating a footerComponent prop for this lib? Or at least create a style to then container for using flexDirection: 'column-reverse'.

I think that a footerComponent is a better idea.

Done in 1.2.0 https://github.com/douglasjunior/react-native-recaptcha-that-works/releases/tag/1.2.0

authors: Cnilton douglasjunior


text:
Add VPNGate

It will be much better and efficient if somehow integrate VPNGate API
vpngate.net/api/iphone/
Instead of manually downloading and editing firestore, it can be automated via this API.

This project is just a simple outline as there is no VPN documentation for Android. You can customize it and use it however you want. I'm also not sure if VPNGate offers an API. If it does and you don't know how to do it, I can help you.

VPNGates provides a free api type response
https://www.vpngate.net/api/iphone/

Okay, I'll try to take care of it if I have free time. Thank's.

authors: doxart shoaib-jamal

repo: doxart/MyVPN


text:
Show value of pixel on mouseover

Is your feature request related to a problem? Please describe.
No
Describe the solution you'd like
Would like to be able to mouseover a pixel to see the value. For example, when mousing over a Digital Accumulation product, show the value of the pixel at mouse pointer and show the value down at the bottom next to the coordinates. "Ex: Value = .6 in."
Describe alternatives you've considered
Opening a different radar app
Additional context
Sorry if this has already been suggested. I didn't see anything. The app is superb.

Thanks for the suggestion! This should already be supported using the SHIFT key. Does this work for you?

Thanks for the suggestion! This should already be supported using the SHIFT key. Does this work for you?

Ahhh! why, yes it does! Thank you !

Thanks for the suggestion! This should already be supported using the SHIFT key. Does this work for you?

Ahhh! why, yes it does! Thank you !

Great! Glad to be of help!

authors: Bigfootbuilt dpaulat

repo: dpaulat/supercell-wx


text:
🛑 Fastbin Service is down

In 13509a1, Fastbin Service (https://paste.dpG06.top) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Fastbin Service is back up in 451467e after 1 day, 2 hours, 14 minutes.

repo: dplayz/status


text:
Support optional fields

This is discussed in https://github.com/grpc-ecosystem/protoc-gen-grpc-gateway-ts/issues/21
From the language guide: https://protobuf.dev/programming-guides/proto3/#field-labels

optional: An optional field is in one of two possible states:
the field is set, and contains a value that was explicitly set or parsed from the wire. It will be serialized to the wire.
the field is unset, and will return the default value. It will not be serialized to the wire.
You can check to see if the value was explicitly set.

If I recall, this wasn't originally supported in proto3 but is now being recommended as a way of differentiating between nil and zero values, without having to use the Wrapper types.

Because proto3 optional is implemented in terms of a singleton oneof, this almost works out of the box. The generated type looks like this:
type BaseOptionalFieldsRequest = {
  str?: string
  number?: number
}

export type OptionalFieldsRequest = BaseOptionalFieldsRequest
  & OneOf<{ optStr: string }>
  & OneOf<{ optNumber: number }>

The problems with this are that:

str is already optional, so there's not really a functional difference.
I think it's going to require the gateway to have EmitOptional set on the MarshalOptions

wdyt @seanami ?

The above PR make it work, but doesn't update the typescript definitions. That means a non-optional field that is empty, implies zero-value. But there's no good way to differentiate on the client without knowing the API spec.
An option could be to add a flag to the generator: --strict_types which at least requires an explicit zero value to be specified. This would work with EmitUnpopulated=true, but with EmitUnpopulated=false undefined values could be sent over the wire and parsed into an object with non-null fields.

I added a test case here.
With EmitUnpopulated on:

msg1: {"str":"", "msg":null}
msg2: {"str":"test", "optStr":"test", "msg":{"str":"test", "optStr":"test"}, "optMsg":{"str":"test", "optStr":"test"}}

With EmitUnpopulated off:

msg1: {}
msg2: {"str":"test", "optStr":"test", "msg":{"str":"test", "optStr":"test"}, "optMsg":{"str":"test", "optStr":"test"}}

So with EmitUnpopulated=true I think the types might make sense to be as follows:
message TestMsg {
  string str = 1;                  // string
  optional opt_str = 2;            // string?
  TestSubMsg msg = 3;              // TestSubMsg | null
  optional TestSubMsg opt_msg = 4; // TestSubMsg?
}

And with EmitUnpopulated=false:
message TestMsg {
  string str = 1;                  // string?
  optional opt_str = 2;            // string?
  TestSubMsg msg = 3;              // TestSubMsg?
  optional TestSubMsg opt_msg = 4; // TestSubMsg?
}

In which case, a flag seems like the best bet so that users can align the gRPC Gateway settings with the generated typescript. In the same way as the useProtoNames / use_proto_names is passed.

Thanks for the test case illumination!
I see, so null actually gets used for non-optional fields when they're not set. (And I'm imagining that they'd also get used for optional fields when it's set to the empty/default value? Or would that just be the string instead?)
I guess I needed one more test case for each protojson option, which is "What does a 'explicitly set to empty' optional field look like?" Does it ever use null, or does it just use default values like "" or 0 or etc.?
Depending on that answer, I think your proposal is either basically right, or you might need to add null as a possible type for the optional values when EmitUnpopulated=true.

One thing that's not great about your EmitUnpopulated=true proposal: It's always possible that a field could be missing unexpectedly because the server is running a different version of the proto def. I think that's why the current types always includes undefined as a possible value for every field, because it might just not show up on the wire, and the app code should be resilient to that.
But, I agree that your proposal would be nice, and when using protos in TypeScript I've often found myself being annoyed by having to handle undefined everywhere, especially for outgoing messages, where it's really not necessary.
One idea to make your proposal work would be to add templatized helper code in between receiving the response message from an endpoint and handing it to app code. It would use the proto definition to check for all of the expected/non-optional fields, and if any are missing over the wire, it would add the field with the default value, rather than letting it be undefined. This would ensure that, once app code had a response message, it really DOES conform to the type information without falling back on undefined.

Your point about compatibility is an interesting one, getting concrete it would happen under the following situations:

the server deprecates a field prior to clients being expired
a server is rolled back independently of clients
a client is pushed before the server

I'd expect that a lot of code doesn't handle these cases very gracefully right now :-/
Coercing undefined to zero type would require the proto descriptors (or some abstraction) on the client. Supporting nested messages seems especially tricky.

I have a POC of a parameter that updates the types per the above proposal. Here's your example from above:
type BaseOptionalTestMsg = {
  str: string
  msg: OptionalTestSubMsg | null
}

export type OptionalTestMsg = BaseOptionalTestMsg
  & OneOf<{ optStr: string }>
  & OneOf<{ optMsg: OptionalTestSubMsg }>

type BaseOptionalTestSubMsg = {
  str: string
}

export type OptionalTestSubMsg = BaseOptionalTestSubMsg
  & OneOf<{ optStr: string }>

Here's the same message without the flag specified. Based on the corresponding behavior in the gRPC Gateway you can't tell the difference between msg and optMsg.
type BaseOptionalTestMsg = {
  str?: string
  msg?: OptionalTestSubMsg
}

export type OptionalTestMsg = BaseOptionalTestMsg
  & OneOf<{ optStr: string }>
  & OneOf<{ optMsg: OptionalTestSubMsg }>

type BaseOptionalTestSubMsg = {
  str?: string
}

export type OptionalTestSubMsg = BaseOptionalTestSubMsg
  & OneOf<{ optStr: string }>

This seems like a good incremental step to me, since currently the typescript types aren't accurate if the server is set to use EmitUnpopulated.
Then we could explore ways of mapping

Ok, I may have mispoke above.
Here's the proto message:
message OptionalFieldsMsg {
  string empty_str = 1;
  int32 empty_number = 2;
  OptionalFieldsSubMsg empty_msg = 3;
  optional string empty_opt_str = 4;
  optional int32 empty_opt_number = 5;
  optional OptionalFieldsSubMsg empty_opt_msg = 6;

  string zero_str = 7;
  int32 zero_number = 8;
  OptionalFieldsSubMsg zero_msg = 9;
  optional string zero_opt_str = 10;
  optional int32 zero_opt_number = 11;
  optional OptionalFieldsSubMsg zero_opt_msg = 12;

  string defined_str = 13;
  int32 defined_number = 14;
  OptionalFieldsSubMsg defined_msg = 15;
  optional string defined_opt_str = 16;
  optional int32 defined_opt_number = 17;
  optional OptionalFieldsSubMsg defined_opt_msg = 18;
}

message OptionalFieldsSubMsg {
  string str = 1;
  optional string opt_str = 2;
}

This is the default response.

All empty fields are omitted.
Zero fields are undefined unless they are optional — so the client needs to know they are optional in order to convert to empty.

{
  "zeroMsg": {},
  "zeroOptStr": "",
  "zeroOptNumber": 0,
  "zeroOptMsg": {},
  "definedStr": "hello",
  "definedNumber": 123,
  "definedMsg": {
    "str": "hello",
    "optStr": "hello"
  },
  "definedOptStr": "hello",
  "definedOptNumber": 123,
  "definedOptMsg": {
    "str": "hello",
    "optStr": "hello"
  }
}

type BaseOptionalFieldsMsg = {
  emptyStr?: string
  emptyNumber?: number
  emptyMsg?: OptionalFieldsSubMsg
  zeroStr?: string
  zeroNumber?: number
  zeroMsg?: OptionalFieldsSubMsg
  definedStr?: string
  definedNumber?: number
  definedMsg?: OptionalFieldsSubMsg
}

export type OptionalFieldsMsg = BaseOptionalFieldsMsg
  & OneOf<{ emptyOptStr: string }>
  & OneOf<{ emptyOptNumber: number }>
  & OneOf<{ emptyOptMsg: OptionalFieldsSubMsg }>
  & OneOf<{ zeroOptStr: string }>
  & OneOf<{ zeroOptNumber: number }>
  & OneOf<{ zeroOptMsg: OptionalFieldsSubMsg }>
  & OneOf<{ definedOptStr: string }>
  & OneOf<{ definedOptNumber: number }>
  & OneOf<{ definedOptMsg: OptionalFieldsSubMsg }>

type BaseOptionalFieldsSubMsg = {
  str?: string
}

export type OptionalFieldsSubMsg = BaseOptionalFieldsSubMsg
  & OneOf<{ optStr: string }>

Here is the response with emit_unpopulated enabled:

Only unset optional fields are undefined, which is more explicit IMO.

{
  "emptyStr": "",
  "emptyNumber": 0,
  "emptyMsg": null,
  "zeroStr": "",
  "zeroNumber": 0,
  "zeroMsg": {
    "str": ""
  },
  "zeroOptStr": "",
  "zeroOptNumber": 0,
  "zeroOptMsg": {
    "str": ""
  },
  "definedStr": "hello",
  "definedNumber": 123,
  "definedMsg": {
    "str": "hello",
    "optStr": "hello"
  },
  "definedOptStr": "hello",
  "definedOptNumber": 123,
  "definedOptMsg": {
    "str": "hello",
    "optStr": "hello"
  }
}

lueMsg | null
}

type BaseOptionalFieldsMsg = {
  emptyStr: string
  emptyNumber: number
  emptyMsg: OptionalFieldsSubMsg | null
  zeroStr: string
  zeroNumber: number
  zeroMsg: OptionalFieldsSubMsg | null
  definedStr: string
  definedNumber: number
  definedMsg: OptionalFieldsSubMsg | null
}

export type OptionalFieldsMsg = BaseOptionalFieldsMsg
  & OneOf<{ emptyOptStr: string }>
  & OneOf<{ emptyOptNumber: number }>
  & OneOf<{ emptyOptMsg: OptionalFieldsSubMsg }>
  & OneOf<{ zeroOptStr: string }>
  & OneOf<{ zeroOptNumber: number }>
  & OneOf<{ zeroOptMsg: OptionalFieldsSubMsg }>
  & OneOf<{ definedOptStr: string }>
  & OneOf<{ definedOptNumber: number }>
  & OneOf<{ definedOptMsg: OptionalFieldsSubMsg }>

type BaseOptionalFieldsSubMsg = {
  str: string
}

export type OptionalFieldsSubMsg = BaseOptionalFieldsSubMsg

I'm going to call this good for now. Client-side mapping of undefined to zero types would be a nice followup.

Thanks for all of that test code and examples, that's super helpful. 🙏
One annoying thing about this type of OneOf approach in the TypeScript is that the types of the fields become "baked in" after the initial object is defined. So, for example:
export function test() {
  let m: OptionalFieldsMsg = {
    emptyStr: '',
    emptyNumber: 0,
    emptyMsg: {str: ''},
    zeroStr: '',
    zeroNumber: 0,
    zeroMsg: null,
    definedStr: 'test',
    definedNumber: 4,
    definedMsg: { str: 'test'},
    emptyOptStr: 'test',
  };

  m.emptyOptNumber = 4;
}

You'll notice that emptyOptStr is defined as part of the original object literal, whereas emptyOptNumber is assigned to the field after the initial object is created.
Even though this is fine from a "are the fields all valid?" standpoint, TypeScript still throws an error:

This makes working with these types of objects annoying in practice, because you have to do things like this to assign new values after object creation:
  m = {
    ...m,
    emptyOptNumber: 4,
  };

This creates unnecessary objects and is also more verbose. So not ideal. Also, I think that using object spreads like ...m can mask other type issues, as I'm not certain that all of the members of the spread are checked.
Instead of using the OneOf and Absent helpers in TypeScript, do you think we could make the types something like this?
// emit_unpopulated = false

type BaseOptionalFieldsMsg = {
  emptyStr?: string;
  emptyOptStr?: string;
  emptyNumber?: number;
  emptyOptNumber?: number;
  emptyMsg?: OptionalFieldsSubMsg;
  emptyOptMsg?: OptionalFieldsSubMsg;
  // etc...
}

type BaseOptionalFieldsSubMsg = {
  str?: string;
  optStr?: string;
}

// emit_unpopulated = true

type BaseOptionalFieldsMsg = {
  emptyStr: string;
  emptyOptStr?: string;
  emptyNumber: number;
  emptyOptNumber?: number;
  emptyMsg: OptionalFieldsSubMsg | null;
  emptyOptMsg?: OptionalFieldsSubMsg; // Should this have `| null` added? Seems like it doesn't happen...
  // etc...
}

type BaseOptionalFieldsSubMsg = {
  str: string;
  optStr?: string;
}

This would make the types much easier to work with in the editor, and prevent unnecessary contortions. It's not clear that the OneOf/Absent is really getting us anything additional?

authors: dpup seanami

repo: dpup/protoc-gen-grpc-gateway-ts


text:
Benchmarking v1.0.0 against v0.9

Out of curiosity I ran a dead-simple benchmark which loads a pre-fetched list of dataflows from estat:
flows = Request('estat').dataflow(tofile='estat_flows.xml')

The file sizte is about 4.1MB.
Benchmark results:
In [34]: %timeit data_resp=sdmx.read_sdmx('estat_flows.xml')
4.13 s ± 21.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [35]: exit

(sdmx37) C:\Users\a3305\documents\github>
(sdmx37) C:\Users\a3305\documents\github>deactivate
DeprecationWarning: 'deactivate' is deprecated. Use 'conda deactivate'.

(sdmx37) C:\Users\a3305\documents\github>conda.bat deactivate

(base) C:\Users\a3305\documents\github>
(base) C:\Users\a3305\documents\github>activate pandasdmx09

(pandasdmx09) C:\Users\a3305\documents\github>ipython
Python 3.8.1 (default, Jan  8 2020, 15:55:49) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.11.1 -- An enhanced Interactive Python. Type '?' for help.

# v0.9:
In [1]: import pandasdmx as sdmx

In [4]: estat=sdmx.Request('estat')

In [5]: flows=estat.get(fromfile='estat_flows.xml')

In [6]: %timeit flows=estat.get(fromfile='estat_flows.xml')
122 ms ± 902 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [7]:

So v0.9 is about 34 times faster than v1.0dev when parsing a 4MB structure message.
Sure, v1.0 has quite a few advantages. Still, the performance gap is significant.
I wonder if v1.0 would be faster when skipping pydantic validation by default using .construct().
Other proposals to make v1.0 faster are welcome.

Excellent, thanks for taking this step into benchmarking the code.

I wonder if v1.0 would be faster when skipping pydantic validation by default using .construct().

That's an interesting suggestion. There could be a flag like API_MODE or something like that:

For ordinary use, leave it off as suggested.
For development purposes, e.g. running the test suite, turn it on.

This helps (a lot!) to identify coding errors in the message readers, the main purpose for which it was used in the first place.
Could also show users how to turn it on, in order to debug when they are encountering errors.

Two things that would need investigation (thus time):

How extensive the code changes would be to enable this switch. Objects are instantiated in many places.

Whether the reader code relies on pydantic's type checking. For example if there's code like:
try:
    obj.attr = value
except Exception:
    # pydantic itself has raised an Exception because *value* was the wrong type
    obj.attr = some_other_value

The code should not rely on this, and I do avoid writing code this way out of habit. But it still requires a thorough check.

I'll gladly do these for a 1.1 follow-up release, but don't expect I can find time to do them before 1.0.

Can be discussed in #144

authors: dr-leo khaeru

repo: dr-leo/pandaSDMX


text:
Add flexdll 0.43 and ocaml 5.1.0~alpha2

This PR assumes that the windows-5.0 branch is a good place to prepare packages until the planned merge into the main opam repo.
Now that flexdll 0.43 was released (congratulations! :smile:), we can have an opam package for OCaml 5.1α2 that compiles on both Windows MinGW and Cygwin.
Notes:

I wondered whether it would be more convenient to simply move the flexdll.install to a files subdirectory, rather than fetching from github,
I didn’t try to generate flexdll-bin packages (knowing that they would most probably be broken... :sweat_smile:) so I required the flexdll package for Cygwin builds,
I kept the TODO comment from the opam file for OCaml 5.0 that says that, on Cygwin, if flexdll is installed via Cygwin, it should be used unless the opam flexdll package is explicitly requested; I’ve been using something along those lines for running tests in CI: conf-flexdll but it is not very robust, as any flexdll in PATH is picked up, not necessarily Cygwin’s one,
if that PR is of interest, I was thinking about adding 5.2.0+trunk too.

Thank you, and sorry for taking so long over this! 🤔 I pushed two little changes:

The package doesn't want to be restricted to Windows and Cygwin only - it remains compatible with Linux, etc. opam always uses the package description with the highest priority, so this would cause the compiler to be unavailable if the selection is used on Linux
I merged the flexdll constraint back into the main formula. Does flexdll 0.42 actually not work with Cygwin?

You're absolutely right that the flexdll-bin route wouldn't have worked with Cygwin! It'll also be better for these compilers to bootstrap flexdll, I expect.

I wondered whether it would be more convenient to simply move the flexdll.install to a files subdirectory, rather than fetching from github,

This is generally bad for opam-repository - the file is downloaded with each repository clone. In general, it's better to use URLs which then take advantage of opam's download cache and are only pulled when needed.

Does flexdll 0.42 actually not work with Cygwin?

I seem to remember that some fix available in the Cygwin package flexdll 0.39 was not yet upstreamed (ocaml/flexdll#108 maybe) which was breaking OCaml 5. I might be mistaken.


text:
Event-based auto-update of database

Update the database every time a TEI document was altered or added…

This issue will be covered by dracor-org/dracor-exist#1

great, thx!!

authors: cmil lehkost

repo: dracor-org/dracor-frontend


text:
Add pdb configuration

add option in the configuration to create podDisruptionBudget, so master and replica won't be down at the same time. Maybe even set default when there is a replica

I think it would be nice if the PDB is dynamically changed by the operator, so that a disruption of the master is only allowed if there is at least 1 replica in full sync with the master. Otherwise it could happen that the master is evicted too early by k8s and the cache is gone.

repo: dragonflydb/dragonfly-operator


text:
Add a mazda dashcam only bypass param

Most Mazda vehicles are guarded with ret.dashcamOnly = True.
add them to the appropriate location, e.g.:
ret.dashcamOnly = Params().get_bool('dp_mazda_dashcam_bypass')

#17

repo: dragonpilot-community/dp-devel


text:
Doesn't recongnize non-flag appropriately

~/source/foobar/research/myfile $ ./myfile --display ./out.myfile
Usage: /home/dali/source/projectm/research/myfile/.libs/lt-myfile <--display-d|--convert|-c|--help|-h> -- nonflag1

  Optional flags:
    --display/-d              Displays
    --convert/-c              Converts
    --help/-h                 Print usage and options information

  1 non-flags are required

Closing and associating with #14

repo: drali/sargs


text:
Transition and Trail, staggered unmounting.

Great library. Was wondering if there was a way to do staggered mounting and unmounting as well?
I know with Trail I can have a delay between the different children, but is there a way to have the same delay, when unmounting an item as well?

I believe keyframes could switch the primitive, go from a transition to a trail using the same data.

I believe keyframes could switch the primitive, go from a transition to a trail using the same data.

@mdurbar took a while, but transition has a delay prop now that can trail adds/removes. See: http://react-spring.surge.sh/transition#props

authors: drcmda mdurbar

repo: drcmda/react-spring


text:
[Bug] @wendellhu/redi not export useObservable

Before you submit this issue, have you checked the following

[X] Is this really a problem?
[X] I have searched the Github Issues for similar issues, but did not find anything.

Affected packages and versions
v0.1.12
Reproduction link
https://univer.ai/playground
Expected behavior
bootstrap would't display error info.
Actual behavior
bootstrap will display error info. e.g.

maybe the error code.

System information
No response

It seems that the issue was caused by an outdated demo in one of our playgrounds. We have now fixed the problem. Thank you for bringing this to our attention and for your report.

authors: jikkai semmywong

repo: dream-num/univer


text:
Why is "a" treated as a whitespace

Or am I missing something?

It's left over from something I was working with before. That Set (this._whiteSpaceChars) is not used anywhere. It's dead code. Thanks for pointing it out.

authors: drenther pwolaq


text:
phpunit compatibility update

Phpunit 6 compatibility update

Thanks!

authors: drewm seahken

repo: drewm/mailchimp-api


text:
Ionic App Script Clean not working for me

Note: for support questions, please use one of these channels:
https://forum.ionicframework.com/
http://ionicworldwide.herokuapp.com/
Short description of the problem:
This line in package.json:
"clean": "ionic-app-scripts clean",
should clean the whole www directory. However it doesn't-
What behavior are you expecting?
To have www directory completely cleaned out when saying
ionic build
Steps to reproduce:

Enter "clean": "ionic-app-scripts clean"
Enter ionic build in Terminal
Watch www cleans not completely out.

Which @ionic/app-scripts version are you using?
0.0.36
Other information: (e.g. stacktraces, related issues, suggestions how to fix, stackoverflow links, forum links, etc)

Hello, thanks for using Ionic! This is actually expected behavior which was just recently introduced. We now only clear out the build folder instead of erasing the www folder. Since this is expected behavior I am going to close this issue for now, but if you could comment on your use case for clearing out the entire www folder that would be awesome!

We have configurations and images that do change in assets folder. If we change these in src/assets folder, they do not copied over to www/assets/config/myConfig.jsonfor example.

Copy task is not overriding old files. Please investigate.

This is the only way we got it to work. This is a node_modules file. I think this is not what anybody does want.
http://imgur.com/a/CKea3

repo: driftyco/ionic-app-scripts


text:
Force Sourcemaps

Override the TSConfig value for source maps to ensure they're there since build process depends on TSC generating them.
Thanks,
Dan

We are doing this.
Thanks,
Dan