使用Mono进行编译:System.IO.FileSystem,Version = 4.0.2.0 - >该系统找不到指定的文件

时间:2018-04-10 23:31:53

标签: c# mono

我正在尝试使用Mono Command Prompt x64编译一个名为ChatDaemon的程序(使用Visual Studio 2017编码,在C#中,在Windows 8.0计算机上)。 Mono编译器在失败时提供以下错误报告:

无法加载文件或程序集System.IO.FileSystem,Version = 4.0.2.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中一个依赖项。该系统找不到指定的文件。 (TASKID:24) C:\ Program Files \ Mono \ lib \ mono \ msbuild \ 15.0 \ bin \ Roslyn \ Microsoft.CSharp.Core.targets(84,5):错误MSB6006:" csc.exe"退出代码1.

经过几个小时的研究,我已将这些行插入ChatDaemon.csproj,但无济于事:

<PropertyGroup>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

我已经将以下行插入到ChatDaemon的App.config文件中,也无济于事。

<dependentAssembly>
    <assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.3.0" newVersion="4.3.0" />
</dependentAssembly>

我正在使用以下版本的.NET Framework,如ChatDaemon.csproj文件中所示:

  <ItemGroup>
    <BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
          <Visible>False</Visible>
      <ProductName>Microsoft .NET Framework 4.5.2 %28x86 and x64%29</ProductName>
      <Install>true</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
  </ItemGroup>

我还在ChatDaemon.csproj文件中找到了与System.IO.FileSystem.dll文件有关的这段代码:

<Reference Include="System.IO.FileSystem">
  <HintPath>..\..\..\..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\system.io.filesystem\4.3.0\ref\net46\System.IO.FileSystem.dll</HintPath>
</Reference>

我该如何解决此错误?如果需要更多信息,请告诉我,我会尽快遵守。

1 个答案:

答案 0 :(得分:0)

尝试更改

> <HintPath>..\..\..\..\..\..\..\Program
> Files\dotnet\sdk\NuGetFallbackFolder\system.io.filesystem\4.3.0\ref\net46\System.IO.FileSystem.dll</HintPath>

到标准.NET .dll
该问题可能是由于Nuget软件包引起的。根据{{​​3}},System.IO.FileSystem-package中的文件未版本为4.3.0。

<Reference Include="system.io.filesystem">
    </Reference>

或者,您可以尝试使用nuget包其他子文件夹中的Filesystem-dll,具体取决于您使用的框架。 (例如NuGetFallbackFolder \ System.IO.FileSystem.4.3.0 \ lib \ net46)