我编写了一个.NET Core 2.0控制台应用程序。使用dotnet publish
发布,但是执行过程中出现错误:
运行失败
编译项目
dotnet publish src\Bucket.CLI\Bucket.CLI.csproj -c Release --self-contained false
执行程序
-
bin\Release\netcoreapp2.0\publish
dotnet Bucket.CLI.dll
提示错误:
Error:
An assembly specified in the application dependencies manifest (Bucket.CLI.dep
s.json) was not found:
package: 'System.Text.Encoding.CodePages',version: '4.5.1'
path: 'runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll'
运行成功
但是,如果我指定--runtime
,则不会发生错误:
编译项目
dotnet publish src\Bucket.CLI\Bucket.CLI.csproj -c Release --self-contained false -r win-x64
执行程序
-
bin\Release\netcoreapp2.0\win-x64\publish
dotnet Bucket.CLI.dll
程序运行正常。
这可能是什么原因?
如果我添加要添加的帖子:Bucket.CLI.runtimeconfig.dev.json
,则程序可以成功运行。但这是行不通的。还有其他方法吗?
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\menghanyu\\.dotnet\\store\\|arch|\\|tfm|","C:\\Users\\menghanyu\\.nuget\\packages","C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
]
}
}
当我添加--runtime
进行编译时,没有Bucket.CLI.runtimeconfig.dev.json
该程序也运行成功。
我很困惑,为什么会这样?
csproj文件
-
src/Bucket/Bucket.csproj (.net standard2.0)
<Project Sdk="microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
<FileVersion>0.3.7250.21600</FileVersion>
<Version>0.3.0+source</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="microsoft.CSharp" Version="4.6.0-preview7.19362.9" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
<PackageReference Include="Newtonsoft.Json.Schema" Version="3.0.11" />
<PackageReference Include="System.IO.Compression" Version="4.3.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Assets\Schema\**">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="Assets\Signature\**">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>
</Project>
-
src/Bucket.CLI/Bucket.CLI.csproj (.net core 2.0)
<Project Sdk="microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<StartupObject>Bucket.CLI.Program</StartupObject>
<Version>0.3.0+source</Version>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
<FileVersion>0.3.7250.21600</FileVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Bucket\Bucket.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="bucket">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="bucket.bat">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
-
src/Directory.Build.props (public)
<Project>
<PropertyGroup>
<IsTestProject>$(MSBuildProjectName.Contains('Tests'))</IsTestProject>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<WarningsAsErrors />
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<AdditionalFiles Include="$(MSBuildThisFileDirectory)stylecop.json" Link="stylecop.json" />
<Reference Include="GameBox.Console">
<HintPath>..\..\lib\GameBox.Console\GameBox.Console.dll</HintPath>
</Reference>
<Reference Include="GameBox.Semver">
<HintPath>..\..\lib\GameBox.Semver\GameBox.Semver.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="microsoft.CodeAnalysis.CSharp" PrivateAssets="all" Version="3.1.0-beta3-final" />
<PackageReference Include="microsoft.CodeAnalysis.FxCopAnalyzers" PrivateAssets="all" Version="2.9.2" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="SonarAnalyzer.CSharp" Version="7.14.0.8411">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
<Choose>
<When Condition="'$(IsTestProject)' == 'true'">
<PropertyGroup>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)analysis.test.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.msbuild" Version="2.6.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="microsoft.NET.Test.Sdk" Version="16.1.0" />
<PackageReference Include="Moq" Version="4.11.0-rc1" />
<PackageReference Include="MSTest.TestAdapter" Version="2.0.0-beta4" />
<PackageReference Include="MSTest.TestFramework" Version="2.0.0-beta4" />
</ItemGroup>
</When>
<Otherwise>
<PropertyGroup>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)analysis.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Otherwise>
</Choose>
</Project>
-
.NET Core SDK:
.NET Core SDK:
Version: 3.0.100
Commit: 04339c3a26
Runtime Environment:
OS Name: Windows
OS Version: 6.1.7601
OS Platform: Windows
RID: win7-x64
Base Path: C:\Program Files\dotnet\sdk\3.0.100\
Host (useful for support):
Version: 3.0.0
Commit: 95a0a61858