Почему электронная таблица Gembox cra sh при вызове Excelfile.save: FileNotFoundException Не удалось загрузить файл или сборку System.Security.Permissions - PullRequest
1 голос
/ 25 марта 2020

Я использую Gembox для открытия, изменения и сохранения файла xlsx. Вызов Save в файле Excel вызывает исключение System.IO.FileNotFoundException.

Проблема возникает с серийным ключом нашей компании и со свободным ключом.

Пример кода

using GemBox.Spreadsheet;
namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        { 
            var path = @"C:\code\GemboxTest\App.xlsx"; 
            SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
            ExcelFile ef = ExcelFile.Load(path); 
            ExcelWorksheet ws = ef.Worksheets[0]; 
            //ws.Columns[0].Cells[0].Value = 42; 
            ef.Save(path); // <--------------------------------- Crash!
        }
    }
}

Сообщение об ошибке

Could not load file or assembly 'System.Security.Permissions, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
System.Security.Permissions, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51

Stacktrace

at   .(Stream , Byte[] , Int32 , Int32 , String )
at   .(Stream )
at   .(Stream )
at   . ()
at   .(Stream )
at    .Dispose()
at   .   ​ (Boolean )
at   .Dispose()
at    .    ​ ()
at    .(Boolean )
at    .Dispose()
at GemBox.Spreadsheet.XlsxSaveOptions.(ExcelFile , Stream ,     )
at GemBox.Spreadsheet.XlsxSaveOptions.Save(ExcelFile excelFile, Stream stream, String path)
at GemBox.Spreadsheet.SaveOptions.(ExcelFile , String )
at GemBox.Spreadsheet.ExcelFile.Save(String path, SaveOptions options)
at GemBox.Spreadsheet.ExcelFile.Save(String path)
at ConsoleApp.Program.Main(String[] args) in C:\code\GemboxTest\ConsoleApp\Program.cs:line 14

Версии

  1. . NET Core 3.1 (также не работает с 3.0)
  2. Версия GemBox.Spreadsheet = 45.0.1131
  3. Visual Studio 2019 (VisualStudioVersion = 16.0.29905.134)
  4. Windows 10 pro 64bit

Образец файла csproj

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="GemBox.Spreadsheet" Version="45.0.1131" />
</ItemGroup>
</Project>

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Здесь ответ от поддержки Gembox

Попробуйте добавить ссылку на пакет "System.Security.Permissions" в ваш файл .csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>  
  <ItemGroup>
    <PackageReference Include="GemBox.Spreadsheet" Version="45.0.1131" />
    <PackageReference Include="System.Security.Permissions" Version="4.7.0" />
  </ItemGroup>
</Project>

Как к вашему сведению, я считаю, что этот пакет требуется только для консольного приложения на Windows. Это не требуется при сохранении файлов XLSX с помощью ASP. NET Базовое приложение на Windows или при сохранении файлов XLSX с любым. NET Базовое приложение на Linux.

0 голосов
/ 25 марта 2020

Похоже, что пакет зависит от сборки, на которую нет ссылок или которая не включена.

Как правило, автор пакета ссылается на свои зависимости в файле nuspe c для Targetframework (каждый TargetFramework).


Вы можете обойти это, добавив последний пакет System.Security.Permissions nuget в качестве зависимости к вашему проекту.


Обновление 1: дополнительно

Looking в их примере проекта github repo я вижу ссылки на netcoreapp3.1.

Я протестировал и netcoreapp3.1, и netcoreapp3.0, получил проблему пакета зависимостей с Save, обошел ее, добавив в качестве зависимости (как следует из этого ответа). Gembox.Spreadsheet.Example

В примере и использовании netcoreapp2.2 не было проблем с отсутствующими зависимостями пакета при попытке Save.

Update 2

Удалена ссылка на наблюдаемую проблему с Load, упомянутую в обновлении 1. Похоже, что она не связана и, возможно, возникла проблема во время выполнения и \ или IDE.

Кроме того, эта проблема была проверена только и наблюдается с консольным приложением на платформе windows.

...