运行 Dnx/AspNet5 中的简单控制台应用程序,不会 运行 Visual Studio 之外?
Running a simple Console App in Dnx/AspNet5 and will not run outside of Visual Studio?
我编写了一个简单的小型控制台应用程序作为 AspNet5 控制台程序包
namespace ConsoleApp1
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello world");
Console.ReadLine();
}
}
}
运行 通过 Visual Studio 中的调试,我得到一个命令 window,其中写入了 Hello World。但是,当我使用项目属性 "Produce outputs on build" 编译它时,我得到使用以下输出生成的 artifacts\bin\ConsoleApp1\Debug\app 目录
和一个 dnx46 目录
app目录下.cmd文件内容为
@dnx --appbase "%~dp0." Microsoft.Dnx.ApplicationHost ConsoleApp1 %*
project.json 文件的内容如下
{
"version": "1.0.0-*",
"description": "ConsoleApp1 Console Application",
"authors": [
"Doug"
],
"tags": [
""
],
"projectUrl": "",
"licenseUrl": "",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"ConsoleApp1": "1.0.0"
},
"commands": {
"ConsoleApp1": "ConsoleApp1"
},
"frameworks": {
"dnx46": {
"System.Console": "4.0.0-beta-23516"
}
},
"entryPoint": "ConsoleApp1",
"loadable": false
}
双击 cmd 文件不会 运行 程序。我放入 ReadLine() 代码以在 运行 上暂停应用程序,看看输出是什么,但我看到它闪烁然后消失。我也尝试过 运行 使用以下命令 "dnx ConsoleApp1" 从 powershell 的应用程序目录中安装它,但它不会 运行。这只是一个简单的控制台应用程序,运行 不应该这么难,但我似乎无法在 visual studio 环境之外将其设置为 运行。我做错了什么????
更新 1
我从 src 的目录中得到了 运行 执行,但我似乎无法 运行 从工件目录中以相同的方式输出。有什么想法吗???
PS C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1> dnx run
Hello world
仅供参考,这里是我的 dnvm 列表输出
更新 2
下面是如果我更改到“.cmd”文件的目录并尝试在打开的 window 中手动执行它的输出,这就是为什么它只是终止并关闭...由于 .cmd 文件的内容我认为这至少会起作用......我会尽快尝试 dnu publish。如果发布有效,那么在 artifacts 目录中生成的 .cmd 文件有什么意义。
更新 3
好的,所以我从包含项目源文件的目录中 运行 dnu publish 命令。输出如下。
双击目录结构中突出显示的生成的“.cmd”文件,cmd.exe window 出现并显示正确的输出。目录结构和输出如下。
然而,这让我感到好奇...当我 运行 在编译和 "Produce build outputs" 选项生成的工件目录中使用相同的 dnu publish 命令时,检查了生成的 .cmd 文件不会执行控制台程序??? artifacts 目录中的输出与程序源中允许将所有内容拉到一起执行的文件有什么区别。
PS...为了在 visual studio 之外获取一个控制台程序到 运行,这似乎需要大量工作!这是DNX的意图吗?没有exe?只是好奇
更新 4
我在目录中 运行 输出工件的以下内容...结果在工件目录中仍然没有 运行 可用的程序版本,但输出文件看起来几乎与目录中的相同/src 目录 bin.
很抱歉没有截屏,但我的屏幕不够大,无法同时容纳所有内容。
PS C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app> dnu restore
Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
CACHE https://www.nuget.org/api/v2/
Restoring packages for C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\project.json
Writing lock file C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\project.lock.json
Restore complete, 123ms elapsed
NuGet Config files used:
C:\Users\Doug\AppData\Roaming\NuGet\nuget.config
Feeds used:
https://www.nuget.org/api/v2/
PS C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app> dnu publish --runtime active --no-source
Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
Copying to output path C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\bin\output
Using Project dependency app 1.0.0 for DNX,Version=v4.6
Packing nupkg from Project dependency app
Source C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\project.json
Target C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\bin\output\approot\packages\app.0.0
Building app for DNX,Version=v4.6
Using Project dependency app 1.0.0
Source: C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\project.json
Using Project dependency ConsoleApp1 1.0.0
Source: C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\project.json
Using Assembly dependency fx/mscorlib 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\mscorlib.dll
Using Assembly dependency fx/System 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.dll
Using Assembly dependency fx/System.Core 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.Core.dll
Using Assembly dependency fx/Microsoft.CSharp 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\Microsoft.CSharp.dll
dnu : error CS5001: Program does not contain a static 'Main' method suitable for an entry point
At line:1 char:1
+ dnu publish --runtime active --no-source
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (error CS5001: P... an entry point:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Build failed.
0 Warning(s)
1 Error(s)
Time elapsed 00:00:00.3519605
Total build time elapsed: 00:00:00.3550713
Total projects built: 1
Using Project dependency ConsoleApp1 1.0.0 for DNX,Version=v4.6
Packing nupkg from Project dependency ConsoleApp1
Source C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\project.json
Target C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\bin\output\approot\packages\ConsoleApp1.0.0
Building ConsoleApp1 for DNX,Version=v4.6
Using Project dependency ConsoleApp1 1.0.0
Source: C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\project.json
Using Assembly dependency fx/mscorlib 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\mscorlib.dll
Using Assembly dependency fx/System 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.dll
Using Assembly dependency fx/System.Core 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.Core.dll
Using Assembly dependency fx/Microsoft.CSharp 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\Microsoft.CSharp.dll
Exported application command: ConsoleApp1
ConsoleApp1 -> C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.nupkg
ConsoleApp1 -> C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.symbols.nupkg
Build succeeded.
0 Warning(s)
0 Error(s)
Time elapsed 00:00:00.2780556
Total build time elapsed: 00:00:00.2790409
Total projects built: 1
Adding NuGet package C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.nupkg to C:\Users\Doug\Documents\Visua
l Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\bin\output\approot\packages
Installing ConsoleApp1.1.0.0
Add complete, 46ms elapsed
Removing C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.nupkg
Removing C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.symbols.nupkg
Bundling runtime dnx-clr-win-x86.1.0.0-rc1-update1
Time elapsed 00:00:01.1140479
PS C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app>
这是导致 运行在 artifacts 目录中执行命令 dnu publish 的目录输出...输出是相同的,但 .cmd 文件不会 运行
你能告诉我 运行ning 对项目的 /src 目录与对生产输出的 /artifacts 目录的区别吗?
PS:很抱歉这么长post,我只是想把我的脑袋放在这个 DNX 东西上!再次感谢您的帮助
既然你列出了多个问题,我将逐一解决。
Double clicking the cmd file won't run the program. I put in the ReadLine() code to pause the app on run to see what the output would be, but I see it flash then go away.
这是意料之中的。 cmd 文件在新控制台中启动应用程序,当进程终止时,控制台关闭。
您有几个选择:
- 和你一样,在程序末尾添加一个ReadLine。
- 运行 来自控制台的 cmd 文件。
- 按照此问题 Batch files : How to leave the console window open
中的说明,在 运行 之后保持控制台打开
Update 1 I got this to run executing from the directory of the src, but I can't seem to run the outputs in the same fashion from the artifacts directory. Any ideas???
"Produce outputs on build" 不会生成 运行 可用的可执行文件(是的,这令人困惑),但会生成 nuget 包。
因此,在 dnx 世界中:
- 如果您在构建时生成输出,则相当于 运行ning
dnu pack
。
如果要创建一个包含 运行 可用应用程序的文件夹,则必须 运行 dnu publish
(或从 VS 发布)。根据您传递的参数,您将获得一个文件夹,其中包含 运行nable 应用程序、其依赖项以及可选的 运行time.
因此,可以通过以下方式生成独立的已发布应用程序:
dnu publish --runtime <runtime name or "active"> --no-source
--no-source
参数将预编译您拥有源代码的项目(这是最接近经典 C# 应用程序的项目)。如果没有这个参数,每次应用程序启动时都会即时编译源代码。
发布命令的默认输出在bin\output
下
我编写了一个简单的小型控制台应用程序作为 AspNet5 控制台程序包
namespace ConsoleApp1
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello world");
Console.ReadLine();
}
}
}
运行 通过 Visual Studio 中的调试,我得到一个命令 window,其中写入了 Hello World。但是,当我使用项目属性 "Produce outputs on build" 编译它时,我得到使用以下输出生成的 artifacts\bin\ConsoleApp1\Debug\app 目录
和一个 dnx46 目录
app目录下.cmd文件内容为
@dnx --appbase "%~dp0." Microsoft.Dnx.ApplicationHost ConsoleApp1 %*
project.json 文件的内容如下
{
"version": "1.0.0-*",
"description": "ConsoleApp1 Console Application",
"authors": [
"Doug"
],
"tags": [
""
],
"projectUrl": "",
"licenseUrl": "",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"ConsoleApp1": "1.0.0"
},
"commands": {
"ConsoleApp1": "ConsoleApp1"
},
"frameworks": {
"dnx46": {
"System.Console": "4.0.0-beta-23516"
}
},
"entryPoint": "ConsoleApp1",
"loadable": false
}
双击 cmd 文件不会 运行 程序。我放入 ReadLine() 代码以在 运行 上暂停应用程序,看看输出是什么,但我看到它闪烁然后消失。我也尝试过 运行 使用以下命令 "dnx ConsoleApp1" 从 powershell 的应用程序目录中安装它,但它不会 运行。这只是一个简单的控制台应用程序,运行 不应该这么难,但我似乎无法在 visual studio 环境之外将其设置为 运行。我做错了什么????
更新 1 我从 src 的目录中得到了 运行 执行,但我似乎无法 运行 从工件目录中以相同的方式输出。有什么想法吗???
PS C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1> dnx run
Hello world
仅供参考,这里是我的 dnvm 列表输出
更新 2 下面是如果我更改到“.cmd”文件的目录并尝试在打开的 window 中手动执行它的输出,这就是为什么它只是终止并关闭...由于 .cmd 文件的内容我认为这至少会起作用......我会尽快尝试 dnu publish。如果发布有效,那么在 artifacts 目录中生成的 .cmd 文件有什么意义。
更新 3
好的,所以我从包含项目源文件的目录中 运行 dnu publish 命令。输出如下。
双击目录结构中突出显示的生成的“.cmd”文件,cmd.exe window 出现并显示正确的输出。目录结构和输出如下。
然而,这让我感到好奇...当我 运行 在编译和 "Produce build outputs" 选项生成的工件目录中使用相同的 dnu publish 命令时,检查了生成的 .cmd 文件不会执行控制台程序??? artifacts 目录中的输出与程序源中允许将所有内容拉到一起执行的文件有什么区别。
PS...为了在 visual studio 之外获取一个控制台程序到 运行,这似乎需要大量工作!这是DNX的意图吗?没有exe?只是好奇
更新 4 我在目录中 运行 输出工件的以下内容...结果在工件目录中仍然没有 运行 可用的程序版本,但输出文件看起来几乎与目录中的相同/src 目录 bin.
很抱歉没有截屏,但我的屏幕不够大,无法同时容纳所有内容。
PS C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app> dnu restore
Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
CACHE https://www.nuget.org/api/v2/
Restoring packages for C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\project.json
Writing lock file C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\project.lock.json
Restore complete, 123ms elapsed
NuGet Config files used:
C:\Users\Doug\AppData\Roaming\NuGet\nuget.config
Feeds used:
https://www.nuget.org/api/v2/
PS C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app> dnu publish --runtime active --no-source
Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
Copying to output path C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\bin\output
Using Project dependency app 1.0.0 for DNX,Version=v4.6
Packing nupkg from Project dependency app
Source C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\project.json
Target C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\bin\output\approot\packages\app.0.0
Building app for DNX,Version=v4.6
Using Project dependency app 1.0.0
Source: C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\project.json
Using Project dependency ConsoleApp1 1.0.0
Source: C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\project.json
Using Assembly dependency fx/mscorlib 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\mscorlib.dll
Using Assembly dependency fx/System 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.dll
Using Assembly dependency fx/System.Core 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.Core.dll
Using Assembly dependency fx/Microsoft.CSharp 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\Microsoft.CSharp.dll
dnu : error CS5001: Program does not contain a static 'Main' method suitable for an entry point
At line:1 char:1
+ dnu publish --runtime active --no-source
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (error CS5001: P... an entry point:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Build failed.
0 Warning(s)
1 Error(s)
Time elapsed 00:00:00.3519605
Total build time elapsed: 00:00:00.3550713
Total projects built: 1
Using Project dependency ConsoleApp1 1.0.0 for DNX,Version=v4.6
Packing nupkg from Project dependency ConsoleApp1
Source C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\project.json
Target C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\bin\output\approot\packages\ConsoleApp1.0.0
Building ConsoleApp1 for DNX,Version=v4.6
Using Project dependency ConsoleApp1 1.0.0
Source: C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\project.json
Using Assembly dependency fx/mscorlib 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\mscorlib.dll
Using Assembly dependency fx/System 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.dll
Using Assembly dependency fx/System.Core 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.Core.dll
Using Assembly dependency fx/Microsoft.CSharp 4.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\Microsoft.CSharp.dll
Exported application command: ConsoleApp1
ConsoleApp1 -> C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.nupkg
ConsoleApp1 -> C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.symbols.nupkg
Build succeeded.
0 Warning(s)
0 Error(s)
Time elapsed 00:00:00.2780556
Total build time elapsed: 00:00:00.2790409
Total projects built: 1
Adding NuGet package C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.nupkg to C:\Users\Doug\Documents\Visua
l Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app\bin\output\approot\packages
Installing ConsoleApp1.1.0.0
Add complete, 46ms elapsed
Removing C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.nupkg
Removing C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\src\ConsoleApp1\bin\Debug\ConsoleApp1.1.0.0.symbols.nupkg
Bundling runtime dnx-clr-win-x86.1.0.0-rc1-update1
Time elapsed 00:00:01.1140479
PS C:\Users\Doug\Documents\Visual Studio 14\Projects\WebApplication2\artifacts\bin\ConsoleApp1\Debug\app>
这是导致 运行在 artifacts 目录中执行命令 dnu publish 的目录输出...输出是相同的,但 .cmd 文件不会 运行
你能告诉我 运行ning 对项目的 /src 目录与对生产输出的 /artifacts 目录的区别吗?
PS:很抱歉这么长post,我只是想把我的脑袋放在这个 DNX 东西上!再次感谢您的帮助
既然你列出了多个问题,我将逐一解决。
Double clicking the cmd file won't run the program. I put in the ReadLine() code to pause the app on run to see what the output would be, but I see it flash then go away.
这是意料之中的。 cmd 文件在新控制台中启动应用程序,当进程终止时,控制台关闭。
您有几个选择:
- 和你一样,在程序末尾添加一个ReadLine。
- 运行 来自控制台的 cmd 文件。
- 按照此问题 Batch files : How to leave the console window open 中的说明,在 运行 之后保持控制台打开
Update 1 I got this to run executing from the directory of the src, but I can't seem to run the outputs in the same fashion from the artifacts directory. Any ideas???
"Produce outputs on build" 不会生成 运行 可用的可执行文件(是的,这令人困惑),但会生成 nuget 包。
因此,在 dnx 世界中:
- 如果您在构建时生成输出,则相当于 运行ning
dnu pack
。 如果要创建一个包含 运行 可用应用程序的文件夹,则必须 运行
dnu publish
(或从 VS 发布)。根据您传递的参数,您将获得一个文件夹,其中包含 运行nable 应用程序、其依赖项以及可选的 运行time.因此,可以通过以下方式生成独立的已发布应用程序:
dnu publish --runtime <runtime name or "active"> --no-source
--no-source
参数将预编译您拥有源代码的项目(这是最接近经典 C# 应用程序的项目)。如果没有这个参数,每次应用程序启动时都会即时编译源代码。发布命令的默认输出在
bin\output
下