Comments (46)
To run a published dll-
dotnet app.dll
Don't use "dotnet run".
from core.
To run a published dll-
dotnet app.dll
Don't use "dotnet run".
Oh wow. That's unexpected. Maybe someone ought to make that clearer in the docs. Thanks!
from core.
dotnet run path/to/helloworld.dll
Your published project looks like a portable application which does not have a native bootstrapper like a shell script or a executable.
from core.
It's not very clean. We're looking at moving to a model where you always develop portable apps but you can choose to deploy standalone at publish time.
from core.
I am not sure if it's appropriate for me to add to this thread, but with the obsoletion of project.json
and using the new msbuild tools as part of Visual Studio 2017 RC - what is the process of specifying the runtimes
in the csproj file?
from core.
To get an exe you have to specify that you want to build for a specific runtime:
dotnet publish -c Release -r win10-x64
This will output the exe in bin\Release\netcoreapp1.0\win10-x64\publish
. The output in the terminal only mentions the dll as that's your actual application, but it will output an exe as well.
The docs on this are available here: https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/index#self-contained-deployments-scd
from core.
@ryanelian and @jkristia, I've created the following issue on the core-docs repo to improve discoverability of this information:
dotnet/docs#473
from core.
Oh wow that worked. Thanks Peter! Managed to spit out the executable by using this project.json
(for those who are wondering as well):
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
//"type": "platform",
"version": "1.0.0-rc2-3002702"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
},
"runtimes":{
"win10-x64": { }
}
}
Managed to dig out abit about project.json here.
You can also run dotnet
Any idea how to do that against the previously compiled helloworld.dll using the command line? I'm still curious about this one.
Also, since the .NET Core is cross-platform, can I run that helloworld.dll compiled on Windows on
Linux or Mac?
EDIT
Slightly off-topic but after reading around I tried playing around and used this configuration:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"NETStandard.Library": {
"type": "platform",
"version": "1.5.0-rc3-24116-00"
//https://dotnet.myget.org/feed/dotnet-core/package/nuget/NETStandard.Library
}
},
"frameworks": {
"netstandard1.5": { }
}
}
Then I do dotnet run
. This appears:
E:\helloworld>dotnet run
Project helloworld (.NETStandard,Version=v1.5) will be compiled because inputs were modified
Compiling helloworld for .NETStandard,Version=v1.5
Compilation succeeded.
0 Warning(s)
0 Error(s)
Time elapsed 00:00:01.7820775
The targeted framework { 'NETStandard.Library': '1.5.0-rc3-24116-00' } was not found.
- Check application dependencies and target a framework version installed at:
C:\Program Files\dotnet\shared\NETStandard.Library
- Alternatively, install the framework version '1.5.0-rc3-24116-00'.
No error but it asks me to install a framework. How to do this?
from core.
@ryanelian, agree - it would be good if it was mentioned right in 'dotnet --help'. I spend a bit of time this morning Bing'ing how to get my console app running on OSX from the publish folder
from core.
ok :)
You need to add the right myget feeds to nuget.config so for example:
<configuration>
<packageSources>
<add key="coreFx" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
or you can just add it in the vs options
Here is a sample project.json for a console app:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc3-*"
},
"System.Runtime.CompilerServices.Unsafe": "4.0.0-rc3-*"
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
},
"runtimes": {
"win10-x64": { }
}
}
from core.
You can also specify them with a single RuntimeIdentifier element:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
<RuntimeIdentifier>win10-arm64;win10-x64;debian.8-x64</RuntimeIdentifier>
</PropertyGroup>
As @davidfowl mentioned, we're looking into some alternate models that don't require changing your project in order to publish a standalone app or for a specific runtime.
from core.
There is a bug in the 1.0/1.1 tooling where the path it shows at the end of publish didn't point to the location of the published app. Curious if that's what people are hitting. You have to look in bin\Release\<TargetFramework>\<RuntimeIdentifier>\publish
.
from core.
Heya. Thanks for responding but that doesn't seem to be working.
Yeah I'm curious about that too. I wonder if there's a way to generate the console app as executable.
from core.
You can also run dotnet . A portable app can run on any os and depends on the shared framework for the target platform being there. Currently, the way to get an executable app is to standalone and specify the target runtime ID in project.json. Remove, type: Platform from the netcore.app package reference and add a runtimes section with the right values such as win7-x64.
from core.
You mean convert a previously compiled portable app into a standalone one? I don't think that's possible, at least not with the current version of the tooling
from core.
You mean convert a previously compiled portable app into a standalone one? I don't think that's possible, at least not with the current version of the tooling
Nonono, I meant running the .dll itself. I can't seem to run the compiled binary with dotnet
(the command line simply says Object reference not set to an instance of an object
. (See screenshot)
from core.
I see, that should work.. if the app is compiled as portable it should run anywhere dotnet is installed. (shouldn't net a null reference error anyway) i'd file a bug on the cli repo
Regarding you edit, did you mean to run on the rc3 bits?
from core.
Regarding the edit, yes I meant to run on RC3 bits. Just pure curiosity. Do you know how to do it?
from core.
can someone point me to where i can get a list of all the options for runtimes? I'm trying to publish an executable for mac os but i'm not sure what i should be putting as a value in the runtimes
json field. Right now when i run publish i'm just getting a folder with the same files listed in the first comment.
from core.
@mattcdavis1 See Runtime Identifier catalog in the documentation.
from core.
@svick - thanks! based on that article - i've created a json file that looks like this. However when i run dotnet publish
i'm still not seeing a mac executable file. Am i missing something (right now the app is just a "Hello World" single line app)?
from core.
@mattcdavis1 Based on this article, you also need to remove the "type": "platform"
line from your project.json.
from core.
yep - that worked. thanks!
from core.
First off, I'd like to say thank you to you guys for all this information. It really helped me out. Secondly, however, after reading this, I felt really sad in the pit of my stomach that this is so convoluted. This seems like a real mess. It feels like we've went backwards somehow.
from core.
This did not work for centos linux just for windows mac
from core.
I tried it with the following snippet:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
<RuntimeIdentifier>win10-arm64</RuntimeIdentifier>
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
<RuntimeIdentifier>debian.8-x64</RuntimeIdentifier>
</PropertyGroup>
It does publish succesfully: dotnet publish -r debian.8-x64
from core.
@albertromkes - were you able to actually generate the proper build for debian? According to this other bug, there is an issue generating builds for specific platforms: dotnet/sdk#527
from core.
No. After running dotnet build -r debian.8-32
I run into the same issue.
See blow screenshot:
Publish does produce the correct RID folder and files, but I cannot really test it because there's no ARM support yet for dotnet cli for my Raspberry PI 3 :(
from core.
@albertromkes I ran in similar issue, check your project.json and ensure, that followings is similar like this:
"dependencies": {
"Microsoft.NETCore.App": "1.1.0"
},
"frameworks": {
"netcoreapp1.1": {
"imports": [
"netstandard1.6",
"portable-net45+win8"
]
}
},
"runtimes": {
"win10-x64": {},
"debian.8-x64": {}
}
from core.
@Sebosek - I think that the situation that @albertromkes was describing is using the new tooling in csproj xml files since project.json is becoming obsolete
from core.
@Sebosek @vad710 Indeed. I am using the 'new' csproj file.
from core.
@albertromkes , Is the only thing blocking you now the arm32 support so you can run the published output on RPi3? That will be coming soon.
from core.
@Petermarcu Yes. I'm watching the releases closely :)
from core.
There is a zip of Ubuntu arm32 binaries linked here: https://github.com/dotnet/core-setup/issues/725#issuecomment-268705518
You could try running on that :)
from core.
I ran into this as well and wrote a small msbuild target for this.
Basically, after the Publish target (which will publish the assets targeting the shared framework), invoke msbuild for each of the RuntimeIdentifiers specified.
<Project ToolsVersion="15.0">
<Target Name="PublishAll" AfterTargets="Publish"
Condition="'$(RuntimeIdentifier)'=='' and '$(RuntimeIdentifiers)'!=''">
<ItemGroup>
<RIDsToPublish Include="$(RuntimeIdentifiers)" />
</ItemGroup>
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Publish"
Properties="RuntimeIdentifier=%(RIDsToPublish.Identity)"
RemoveProperties="RuntimeIdentifiers"/>
</Target>
<Target Name="PublishRID" AfterTargets="Publish"
Condition="'$(RuntimeIdentifier)'!=''">
<Message Importance="High" Text="Published $(RuntimeIdentifier)" />
</Target>
</Project>
You can import this target into your .csproj and then dotnet publish
will publish for all of the RIDs defined in your project.
from core.
I thought they were adding that to the VS 2017 MSBuild story. Maybe not?
from core.
That would be awesome! :)
from core.
@srivatsn can you confirm?
from core.
A publishallrids target? No I'm not tracking that for 1.0
from core.
re: dotnet run ...
vs. dotnet ...
The dotnet run ...
expects the directory that contains the project.json
file - builds it, runs it.
The dotnet ...
expects the path to the resulting DLL, runs it.
IMHO: seems like a silly distinction.
from core.
"To run a published dll-
dotnet app.dll
Don't use "dotnet run"."
OK OK. But using dotnet run app.dll I can use --server.urls http://localhost:12345
How can I use another port than default 5000 in case of "dotnet run" ?
from core.
Hey all,
My csproj looks like this:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
<RuntimeIdentifiers>win7-x64</RuntimeIdentifiers>
</PropertyGroup>
</Project>
However, when I use build or publish, I still only get a dll, pdb, and other random output files. What am I missing for creating a standalone exe?
from core.
@jaxspades It should be: <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
.
from core.
Still getting just a dll with that change.
from core.
ditto. no exe output for me, either.
from core.
Hi,
I was having the same problem but got it fixed. Here's what worked for me.
I went through the Publish SCD routine in the doc that @jonstodle provided, which leads to this page: [https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-vs]
in the SCD section it mentions the "Summary" section of the Publish dialog (access it by clicking the 'Configure' link to the right of the 'Target Location' field. *** In the popup, make sure that the Deployment Mode is set to 'Self-contained' and the Target Runtime is 'win10-x64'.*** Even after I changed all the settings in Debug/Build and Project Properties, this setting didn't get changed.
I hope this helps - too bad I'll never get that hour back but...
from core.
Related Issues (20)
- Fedora 38 reaches end of life on 14 May 2024
- Add support for Alpine 3.20 HOT 1
- AAAAAAAAAAAAAAAA HOT 2
- We are pleased to announce the release of .NET 9 Preview 3. HOT 1
- .NET May 2024 Update - .NET 8.0.5, NET 7.0.19, .NET 6.0.30 HOT 31
- debian11 can't install dotnet8 HOT 3
- estimating complexity error
- Missing 6.0.31 and 8.0.6 tags HOT 2
- Net9 preview3 missing api-diff HOT 1
- Windows 11 Theming Does Not Work In PowerShell WPF Window HOT 4
- 9.0.0-preview.3 and 4 missing for linux HOT 4
- Microsoft Security Advisory CVE-2024-30046 | .NET Denial of Service Vulnerability HOT 4
- Checksums missing for ASP.NET 8.0.6 et al HOT 1
- Release dates/notes are inconsistent HOT 7
- We are pleased to announce the release of .NET 9 Preview 5. HOT 1
- Linux installer package and Docker Base Image missing (Again) HOT 1
- "winget instructions" link redirects to Russian translation HOT 2
- Ontbrekende sterren na klikken op "klaar met lezen" HOT 3
- .NET May 28 2024 Update - .NET 8.0.6, NET 7.0.20, .NET 6.0.31 HOT 5
- Can .net 10 provide enhancements to while functions? Add support for while labels HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from core.