Skip to content

Conversation

livarcocc
Copy link
Contributor

Customer scenario

Publishing self-contained apps that have a "." in their name ends up publishing an executable with the wrong name.

When copying the App-Host for a self-contained app, only use the extension when publishing for windows. Otherwise, for apps with a . in the name, the part that comes after the . ends up being used as an extension and the executable has a duplicated last piece of the name, like sample.console.console, instead of sample.console.

Bugs this fixes:

Fixes https://github.com/dotnet/cli/issues/6397

Workarounds, if any

Change the name of your application or hack some msbuild to change the file name after it is copied. It is bad.

Risk

Low

Performance impact

None

Is this a regression from a previous update?

Yes.

Root cause analysis:

Lack of test coverage.

How was the bug found?

Reported by the community.

@livarcocc @dotnet/dotnet-cli for review

@MattGertz for approval

@livarcocc livarcocc added this to the 2.0.0 milestone Jun 30, 2017
@livarcocc livarcocc force-pushed the fix_publishing_self_contained_apps_with_dots_in_name branch 2 times, most recently from 0a2fad0 to 43529b9 Compare June 30, 2017 18:34
@livarcocc
Copy link
Contributor Author

@dotnet-bot Test Windows_NT Debug

<ResolvedFileToPublish Include="%(NativeAppHostNETCore.Identity)">
<RelativePath>$(AssemblyName)%(Extension)</RelativePath>
<RelativePath>$(AssemblyName)</RelativePath>
<RelativePath Condition=" $(RuntimeIdentifier.StartsWith('win')) ">$(AssemblyName)%(Extension)</RelativePath>
Copy link
Contributor

Choose a reason for hiding this comment

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

It is odd that %(Extension) is already the extension of the assembly name here.

I debugged it and it is because NativeAppHostNETCore already gets the name of the app here.

But that is only for 2.0+ apps. The code is quite convoluted. :(

I think the better targeted fix here is:

     <ResolvedFileToPublish Include="%(NativeAppHostNETCore.Identity)">
-        <RelativePath>$(AssemblyName)%(Extension)</RelativePath>
+        <RelativePath>$(AssemblyName)$(_NativeExecutableExtension)</RelativePath>

That at least leaves the handling of executable extensions by platform in one place.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I agree. I wrote that to you in IM 😄.

…nsion when publishing for windows. Otherwise, for apps with a . in the name, the part that comes after the . ends up being used as an extension and the executable has a duplicated last piece of the name, like sample.console.console, instead of sample.console.
@livarcocc livarcocc force-pushed the fix_publishing_self_contained_apps_with_dots_in_name branch from 43529b9 to 3748d66 Compare June 30, 2017 19:46
@livarcocc livarcocc merged commit ad8e302 into dotnet:release/2.0.0 Jun 30, 2017
@livarcocc livarcocc deleted the fix_publishing_self_contained_apps_with_dots_in_name branch June 30, 2017 21:42
@lostllama
Copy link

@livarcocc When will this be released? I just downloaded .NET Core 2.0 from https://www.microsoft.com/net/download/core yesterday and it has this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants