我寫了一個簡單的小控制檯應用程序作爲AspNet5控制檯軟件包在Dnx/AspNet5中運行簡單的控制檯應用程序,並且不會在Visual Studio之外運行?
namespace ConsoleApp1
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello world");
Console.ReadLine();
}
}
}
通過在Visual Studio調試運行這一點,我得到的Hello World命令窗口中寫的,但是當我編譯這與項目屬性「生產上生成輸出」我得到\產生具有以下輸出
℃的dnx46目錄的bin \ ConsoleApp1 \調試\ app目錄的僞像在app目錄.cmd文件的ontents是project.json文件的
@dnx --appbase "%~dp0." Microsoft.Dnx.ApplicationHost ConsoleApp1 %*
內容如下
{
"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
更新2 下面是如果我改變了「.CMD」文件的目錄,並嘗試手動執行它的輸出在一個開放的窗口中,這就是爲什麼它只是終止和關閉......由於.cmd文件的內容,我認爲這至少會起作用......我會盡快發佈dnu發佈。如果發佈工作,那麼artifacts目錄中生成的.cmd文件的重點是什麼。
更新3
好了,我跑了DNU從包含該項目的源文件的目錄發佈命令。輸出如下。
由此產生的「.CMD」文件在目錄結構中突出顯示的是雙次點擊和cmd.exe窗口出現了正確的輸出。目錄結構和輸出如下。
然而,這讓我很好奇......當我運行相同DNU由編譯生成的工件目錄的發佈命令和「生產建設輸出」選項打勾,並將所得.cmd文件將不執行控制檯程序???工件目錄中的輸出與程序源中的文件之間有什麼區別,它們允許將所有內容拉到一起執行。
PS ...這似乎很多工作只是爲了讓一個控制檯程序在Visual Studio外運行!這是DNX的意圖嗎?沒有exe的?只是好奇
UPDATE 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\1.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\1.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>
這是造成運行命令DNU在文物目錄發佈目錄...輸出的輸出是相同的,但.cmd文件將無法運行
燦你告訴我運行在項目的/ src目錄和生產輸出上的/ artifacts目錄之間的區別?
PS:對於這麼長的帖子感到抱歉,只是真的試圖把我的頭圍繞在這個DNX的東西!再次感謝您的幫助
運行'dnvm list'知道什麼是您使用的運行時版本。打開一個命令promt並轉到源代碼:'cd C:\ Users \ Doug \ Documents \ Visual Studio 14 \ Projects \ WebApplication2 \ src \ ConsoleApp1'。並運行'dnx ConsoleApp1'。並分享輸出。 –
閱讀更新。我明白了這一點。從src目錄中。但是該目錄包含源代碼。我想知道爲什麼我不能從構建輸出的工件目錄運行。 – DRobertE