AlbertXiaoPeng
AlbertXiaoPeng

Reputation: 11

C# backup of datatier database works fine in debug environment, but exceptions occur after release

I now have the following code to backup the database

public class SqlServerBacpac
{
    public static void Startup(ServerConfigOption option)
    {
        var connectionString = SqlClientHelper.BuildSqlConnectionString(option);
        var fileName = option.Database + "_" + DateTime.Now.ToString(option.Format) + ".bacpac";
        var filePath = Path.Combine(option.Folder, fileName);
        var ds = new DacServices(connectionString);
        ds.ExportBacpac(filePath, option.Database);
    }
}

use nuget package

Microsoft.SqlServer.Dac

In debug environment, everything works fine

Posting a configuration file

configuration

However, the following problem occurred after the release

Unhandled exception. System.ArgumentException: The path is empty. (Parameter 'path')
   at System.IO.Path.GetFullPath(String path)
   at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
   at Microsoft.Data.Tools.Schema.Sql.Dac.DacOrigin.Operation.SetOperatingAssembly(Assembly assembly)
   at Microsoft.Data.Tools.Schema.Sql.Dac.DacOrigin.Operation..ctor(Assembly executingAssembly)
   at Microsoft.Data.Tools.Schema.Sql.Dac.DacOrigin..ctor(Assembly executingAssembly)
   at Microsoft.SqlServer.Dac.DacServices.<>c__DisplayClass77_1.<CreateExportOperation>b__1()
   at Microsoft.Data.Tools.Schema.Sql.Dac.OperationLogger.Capture(Action action)
   at Microsoft.SqlServer.Dac.DacServices.<>c__DisplayClass77_0.<CreateExportOperation>b__0(Object operation, CancellationToken token)
   at Microsoft.SqlServer.Dac.Operation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context)
   at Microsoft.SqlServer.Dac.OperationExtension.CompositeOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context)
   at Microsoft.SqlServer.Dac.OperationExtension.Execute(IOperation operation, DacLoggingContext loggingContext, CancellationToken cancellationToken)
   at Microsoft.SqlServer.Dac.DacServices.ExportBacpac(Func`1 streamGetter, String databaseName, DacExportOptions exportOptions, IEnumerable`1 tables, CancellationToken cancellationToken)
   at Microsoft.SqlServer.Dac.DacServices.ExportBacpac(String packageFileName, String databaseName, DacExportOptions options, IEnumerable`1 tables, Nullable`1 cancellationToken)
   at Microsoft.SqlServer.Dac.DacServices.ExportBacpac(String packageFileName, String databaseName, DacSchemaModelStorageType modelStorageType, IEnumerable`1 tables, Nullable`1 cancellationToken)
   at Microsoft.SqlServer.Dac.DacServices.ExportBacpac(String packageFileName, String databaseName, IEnumerable`1 tables, Nullable`1 cancellationToken)
   at SqlServerBackup.SqlServerBacpac.Startup(ServerConfigOption option)
   at Program.<<Main>$>g__RunOptions|0_1(ServerConfigOption opts)
   at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult`1 result, Action`1 action)
   at Program.<Main>$(String[] args)

I want the release to be usable in any environment, not just an error

Upvotes: 0

Views: 83

Answers (0)

Related Questions