Получение неверного пути к файлу при создании маршрута к файлу в C# Консольное приложение - PullRequest
0 голосов
/ 14 февраля 2020

Привет, я пытаюсь прочитать сценарий sql в консольном приложении C#. Извините, если это super basi c, но у меня возникают проблемы с маршрутом файла, при котором всегда начинается его генерация в папке bin проекта.

        public static void ApiResources(IConfiguration config, string testUrlExtension)
        {
            try
            {
                var azureDatabaseUrl = String.Format(config["SqlDatabase:BaseUrl"], $"test{testUrlExtension}");

                SqlConnectionStringBuilder connBuilder = new SqlConnectionStringBuilder();
                connBuilder.DataSource = azureDatabaseUrl;
                connBuilder.UserID = config["SqlDatabase:ZupaKeyReleaseUserName"];
                connBuilder.Password = config["SqlDatabase:ZupaKeyReleasePassword"];
                connBuilder.InitialCatalog = "zupaauthentication";

                using (SqlConnection connection = new SqlConnection(connBuilder.ConnectionString))
                {
                    using (SqlCommand command = connection.CreateCommand())
                    {
                        connection.Open();
                        var GetLocalPathToProject = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase).Split("Zupa.ReleaseDeploymentAutoConfigure")[0];
                        var routeToApiResourseSqlScript = $"{GetLocalPathToProject}Zupa.ReleaseDeploymentAutoConfigure\\Zupa.ReleaseDeploymentAutoConfigure\\Sql\\Scripts\\";
                        var apiResourcesFileName = "AddApiResorces.sql";
                        var fullPathToSqlScript = $"{routeToApiResourseSqlScript}{apiResourcesFileName}";

                        command.CommandText = File.ReadAllText(fullPathToSqlScript);
                        command.ExecuteNonQuery();

                        connection.Close();
                    }
                }
            }
            catch (SqlException e)
            {
                Console.WriteLine(e.InnerException);
            }
        }

Ошибка, которую я получаю, выглядит следующим образом:

Что-то пошло не так, попробуйте снова сконфигурировать релиз. System.IO.IOException: неверный синтаксис имени файла, имени каталога или метки тома. :

'C: \ Zupa_Source_Code \ Zupa.ReleaseDeploymentAutoConfigure \ Zupa.ReleaseDeploymentAutoConfigure \ bin \ Debug \ netcoreapp3.1 \ file: \ C: \ Zupa_Source_Cleaseto_setup ReleaseDeploymentAutoConfigure \ Sql \ Scripts \ AddApiResorces. sql '

В конец каталога bin добавляется правильный путь:

файл: \ C: \ Zupa_Source_Code \ Zupa.ReleaseDeploymentAutoConfigure \ Zupa.ReleaseDeploymentAutoConfigure \ Sql \ Scripts \ AddApiResorces. sql

Заранее спасибо, Крис.

1 Ответ

1 голос
/ 14 февраля 2020

Измените «CodeBase» в этой строке

var GetLocalPathToProject = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase).Split("Zupa.ReleaseDeploymentAutoConfigure")[0];

на Location:

var GetLocalPathToProject = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location).Split("Zupa.ReleaseDeploymentAutoConfigure")[0];
...