编译 .NET Core VS17
Compiling .NET Core VS17
最近几天,我一直在尝试编译我的 .NET Core 控制台应用程序,并将其上传到 VPS 运行ning "Windows Server 2012 R2"。我使用 .NET Core 的原因是库需要它 - Discord.Net 1.0.
我尝试的第一件事就是获取我的发布 DLL 文件和数据,文件结构如下:
LeveledStudios.deps
LeveledStudios.dll
LeveledStudios.pdb
LeveledStudios.runtimeconfig.dev
LeveledStdios.runtimeconfig
这在我开发它的 PC 上运行良好,但是我进入我的服务器 运行 "dotnet LeveledStudios.dll",并遇到了错误
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`
注意到这符合我的开发 PC 上的 .nuget 文件夹的结构。我将它复制过来并遇到了同样的问题,并试图将它复制到与 leveledstudios.dll 相同的文件夹中,只是将 运行 复制到一些拒绝工作的 .dll 中。这还包括丢失的系统 DLL 文件,如 System.Net.Http 等
我进行了一些谷歌搜索,看到了有关自包含 .NET Core 应用程序的信息。这听起来很完美,因为显然我的问题是它没有使用我所有的额外库进行编译。我有点困惑,因为我没有 project.json 文件,正如我阅读的所有文档中提到的那样。
然而当运行宁:
dotnet restore
dotnet build -r win10-x64
我收到大量错误,提示 none 个系统库已编译:
Errors
LeveledStudios.csproj的内容:
<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>
我该如何解决这个问题?
...self contained .NET Core applications [sound] perfect... however... I get a host of errors, suggesting none of the system libraries are compiled.
要解决构建 self-contained 应用程序时发生的错误,请将这一行添加到 *.csproj 文件中:
<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
恢复将缩短 运行 时间,允许您构建和发布 self-contained 应用程序。
dotnet restore
dotnet build -r win10-x64
dotnet publish -c release -r win10-x64
最终的 *.csproj 文件如下所示:
<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>
这就是发布为 self-contained 应用程序的方法,这是解决您最初问题的一种替代方法。
另一种选择(Ryan 建议但你说它不起作用)是使用 framework-dependent 应用程序,在这种情况下你不需要 RuntimeIdentifiers
属性。然后您可以 运行 相同的命令,但不指定 运行 时间。
dotnet restore
dotnet build
dotnet publish
包含 Discord
依赖项的发布文件将位于此处:
bin\Debug\netcoreapp1.0\publish
最近几天,我一直在尝试编译我的 .NET Core 控制台应用程序,并将其上传到 VPS 运行ning "Windows Server 2012 R2"。我使用 .NET Core 的原因是库需要它 - Discord.Net 1.0.
我尝试的第一件事就是获取我的发布 DLL 文件和数据,文件结构如下:
LeveledStudios.deps
LeveledStudios.dll
LeveledStudios.pdb
LeveledStudios.runtimeconfig.dev
LeveledStdios.runtimeconfig
这在我开发它的 PC 上运行良好,但是我进入我的服务器 运行 "dotnet LeveledStudios.dll",并遇到了错误
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`
注意到这符合我的开发 PC 上的 .nuget 文件夹的结构。我将它复制过来并遇到了同样的问题,并试图将它复制到与 leveledstudios.dll 相同的文件夹中,只是将 运行 复制到一些拒绝工作的 .dll 中。这还包括丢失的系统 DLL 文件,如 System.Net.Http 等
我进行了一些谷歌搜索,看到了有关自包含 .NET Core 应用程序的信息。这听起来很完美,因为显然我的问题是它没有使用我所有的额外库进行编译。我有点困惑,因为我没有 project.json 文件,正如我阅读的所有文档中提到的那样。
然而当运行宁:
dotnet restore
dotnet build -r win10-x64
我收到大量错误,提示 none 个系统库已编译:
Errors
LeveledStudios.csproj的内容:
<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>
我该如何解决这个问题?
...self contained .NET Core applications [sound] perfect... however... I get a host of errors, suggesting none of the system libraries are compiled.
要解决构建 self-contained 应用程序时发生的错误,请将这一行添加到 *.csproj 文件中:
<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
恢复将缩短 运行 时间,允许您构建和发布 self-contained 应用程序。
dotnet restore
dotnet build -r win10-x64
dotnet publish -c release -r win10-x64
最终的 *.csproj 文件如下所示:
<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>
这就是发布为 self-contained 应用程序的方法,这是解决您最初问题的一种替代方法。
另一种选择(Ryan 建议但你说它不起作用)是使用 framework-dependent 应用程序,在这种情况下你不需要 RuntimeIdentifiers
属性。然后您可以 运行 相同的命令,但不指定 运行 时间。
dotnet restore
dotnet build
dotnet publish
包含 Discord
依赖项的发布文件将位于此处:
bin\Debug\netcoreapp1.0\publish