5

Mam bardzo prostą aplikację .NET Core (.NET Framework) utworzoną przy użyciu aktualizacji 3 programu Visual Studio 2015, która jest kompilowana bez błędów.Błąd "Nie można znaleźć części ścieżki" podczas publikowania .NET Core Application

Mogę publikować w systemie plików z profilem x64. Jednak podczas próby opublikowania w docelowym środowisku wykonawczym "win7-x86" pojawia się następujący błąd:

Could not find a part of the path 'c:\Users\Developer\Documents\Visual Studio 2015\Projects\SelfHostTest\src\SelfHostTest\bin\Release\net452\win7-x86\SelfHostTest.exe'

Używam komputera z systemem Windows 8.1 x 64. Poszedłem do "Menedżera konfiguracji" i zmieniłem "Platformę" z "Dowolny procesor" na "x86", ale nie działałem.

Zauważyłem, że istnieje folder "src \ SelfHost2 \ bin \ Debug \ net452 \ win7-x64", ale nic, co robię, nie tworzy struktury dla x86.

Ten publikują prace:

enter image description here

to opublikować nie działa:

enter image description here

Oto mój project.json aby pomóc ktoś mi pomaga.

{ 
    "dependencies": { 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.AspNetCore.Server.WebListener": "0.1.0", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0" 
    }, 

    "tools": { 
    "BundlerMinifier.Core": "2.0.238", 
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
    }, 

    "frameworks": { 
    "net452": { 
     "dependencies": { 
     } 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "runtimes": { 
    "win7-x64": {}, 
    "win7-x86": {} 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "Areas/**/Views", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "prepublish": [ "bower install", "dotnet bundle" ], 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    }, 

    "commands": { 
    "http": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000" 
    } 
} 

Odpowiedz

8

To jest błąd w oprzyrządowaniu. Zawsze będzie budowany dla domyślnego RID (i AFAIK nie ma możliwości zmiany), ale w oknie dialogowym publikowania zobaczysz wszystkie RIDy z project.json i jeśli wybierzesz opcję inną niż domyślna, publikacja się nie powiedzie od czasu projektu nie został zbudowany dla tego RID. Spróbuj budować z wiersza poleceń za pomocą RID, który chcesz opublikować. W ten sposób podczas publikowania VS będzie można znaleźć pliki binarne, a publikacja powinna działać.

+0

Ok. Napisałem na konsoli mojej rozwijającej się maszyny "dotnet publish --configuration Release --runtime win7-x86". Stworzył folder "Release \ net452 \ win7-x86". Skopiowałem zawartość do mojego Windows7. Uruchomiłem exe i dostałem błąd narzekający na x86/x64 – Murilo

+0

Spróbuj dodać '" platformę ":" x86 "' do twojego 'buildOptions' w twoim project.json podczas budowania dla x86 – Pawel

+0

To zadziałało! Ale pozwól mi zapytać: kiedy publikujesz na x64, będzie to naprawdę x64? – Murilo