2017-01-21 18 views
4

最後の数日間、私は.netコアコンソールアプリケーションをコンパイルし、それを "Windows Server 2012 R2"を実行するvpsにアップロードしようとしていました。私が.Net Coreを使用している理由は、これがライブラリ - Discord.Net 1.0に必要なためです。コンパイル.Net Core VS17

私が試した最初のものは、単純に以下のファイル構造で、私のリリースのdllとデータを取っていた。

LeveledStudios.deps 
LeveledStudios.dll 
LeveledStudios.pdb 
LeveledStudios.runtimeconfig.dev 
LeveledStdios.runtimeconfig 

これは、PC上で実行するためうまく働いた私は、それを開発したが、私はその後、私の入りましたサーバー、「DOTNETのLeveledStudios.dll」を実行し、エラーこれは私の開発用PC上で.nugetフォルダの構造を装着着目

Error: assembly specified in the dependencies manifest was not found -- package: 'discord.net.commands', version '1.0.0-rc-00546', path: 'lib/netstandard1.3/Discord.Net.Commands.dll` 

に直面していた、私が渡ってそれをコピーして、同じ問題に直面して、試してみましたleveledstudios.dllと同じフォルダにコピーします。作業を拒否するいくつかの.dllを実行します。これには、System.Net.HttpなどのシステムDLLの欠落も含まれていました。

私はいくつかのグーグルを行い、独自の.netコアアプリケーションに関する情報を見ました。私の問題は明らかに、私の追加のライブラリすべてでコンパイルされていなかったからです。私はproject.jsonファイルを持っていなかったので、少し混乱しました。

しかし実行している場合:

dotnet restore 
dotnet build -r win10-x64 

私はエラーのホストを取得し、システムライブラリのどれを示唆していないと、コンパイルされていますLeveledStudios.csprojの

Errors

内容:

<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> 
    <PropertyGroup> 
    <OutputType>Exe</OutputType> 
    <TargetFramework>netcoreapp1.0</TargetFramework> 
    </PropertyGroup> 
    <ItemGroup> 
    <Compile Include="**\*.cs" /> 
    <EmbeddedResource Include="**\*.resx" /> 
    </ItemGroup> 
    <ItemGroup> 
    <PackageReference Include="Discord.Net" Version="1.0.0-rc-00546" /> 
    <PackageReference Include="Discord.Net.Commands" Version="1.0.0-rc-00546" /> 
    <PackageReference Include="Discord.Net.Core" Version="1.0.0-rc-00546" /> 
    <PackageReference Include="Discord.Net.WebSocket" Version="1.0.0-rc-00546" /> 
    <PackageReference Include="Microsoft.NETCore.App" Version="1.0.1" /> 
    <PackageReference Include="Newtonsoft.Json" Version="9.0.2-beta2" /> 
    </ItemGroup> 
</Project> 

誰もがwiを扱っている経験があればネットコアといくつかの方向を与えることができる、私はそれを感謝します。

+0

project.json = VS2015、.csproj = VS2017 –

+0

、しかし、私はしました.csprojのために何をすべきかに関する文書が見つかりませんでした。 – OllysCoding

+1

'dotnet publish'を実行してみてください。これにより、アプリケーションを別のマシンにデプロイするために必要なすべての成果物が公開されます。 –

答えて

1

...自己完結型.net core applications [sound] perfect ...しかし、私はシステムライブラリがコンパイルされていないことを示唆しています。 、あなたは自己完結型のアプリケーションとして構築されたときにhappeedエラーを解決あなた*の.csprojファイルにこの1行を追加するには

<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers> 

復元は、あなたをできるように、ランタイムが停止します自己完結型アプリケーションとしてビルドして公開することができます。

<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> 
    <PropertyGroup> 
    <OutputType>exe</OutputType> 
    <TargetFramework>netcoreapp1.0</TargetFramework> 
    <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers> 
    </PropertyGroup> 
    <ItemGroup> 
    <Compile Include="**\*.cs" /> 
    <EmbeddedResource Include="**\*.resx" /> 
    </ItemGroup> 
    <ItemGroup> 
    <PackageReference Include="Discord.Net" Version="1.0.0-rc-00546" /> 
    <PackageReference Include="Discord.Net.Commands" Version="1.0.0-rc-00546" /> 
    <PackageReference Include="Discord.Net.Core" Version="1.0.0-rc-00546" /> 
    <PackageReference Include="Discord.Net.WebSocket" Version="1.0.0-rc-00546" /> 
    <PackageReference Include="Microsoft.NETCore.App" Version="1.0.1" /> 
    <PackageReference Include="Newtonsoft.Json" Version="9.0.2-beta2" /> 
    </ItemGroup> 
</Project> 

あなたの最初の問題を解決する一つの選択肢である自己完結型のアプリケーションとして公開する方法ですそれ:

dotnet restore 
dotnet build -r win10-x64 
dotnet publish -c release -r win10-x64 

最終* .csprojファイルには、次のようになります。

他の選択肢(Ryanが示唆し、あなたがうまくいかないと言った)は、フレームワークに依存するアプリケーションを使用することです。この場合、RuntimeIdentifiersプロパティは必要ありません。ランタイムを指定せずに同じコマンドを実行できます。

dotnet restore 
dotnet build 
dotnet publish 

ここになり、Discord依存関係が含まれている、ファイルを公開:私はこのことを認識してい

bin\Debug\netcoreapp1.0\publish 
+0

私はあなたのcsprojにStartupObjectを指定する必要があるかもしれないことを追加するだけです。たとえば、メインがProgramという名前のクラスにある場合は、 Programを.csprojに追加する必要があります –