Короткий ответ: вашей программе нужны именно те компоненты, которые вы используете в своем исходном коде.
.NET Framework 4 доступен на большинстве современных компьютеров Windows, поэтому, скорее всего, это не так.проблема (но вы все равно можете убедиться, что на ваших целевых машинах есть .NET 4, а не только .NET 3.5.)
Более важно подумать о компонентах, которые по умолчанию не установлены нацелевая машина.Это включает, например, SQL Server 2008. SQL Server, хотя и от Microsoft, является автономным продуктом и , а не частью .NET Framework.Даже если вы установили .NET 4, это не решило бы проблемы с базой данных.
К сожалению, вы еще не сказали, есть ли у вас база данных SQL Server или SQL Server Compact Edition (последняя из которых толькофайл, который может быть развернут с вашей программой, в то время как первый запущен как системная служба на каком-либо сервере.)
В любом случае убедитесь, что каждый целевой компьютер может получить доступ к этой базе данных.Это означает:
Если это локальная база данных SQL Server (на том же компьютере, на котором выполняется приложение), SQL Server необходимо установить на каждом целевом компьютере.(Мы говорим здесь не о SQL Server CE, а о полномасштабном серверном продукте!)
Если это база данных на общедоступном сетевом сервере, убедитесь, что вы 'у нас есть правильная строка подключения, и права доступа установлены правильно.
Обновление:
Давайте посмотрим на строку подключения:
string cs = "Data Source=.\\SQLEXPRESS;AttachDbFilename=…\\my.mdf;…";
Исходя из этого, получается, что ...
Вы установили SQL Server 2008 Express на свой компьютер иВы создали базу данных, которая хранится в файле my.mdf
, который находится в двоичной папке вашей программы (например, bin/Release
).
Вы настроили свою программу так, чтобы онаподключается к базе данных путем прямого доступа к файлу базы данных my.mdf
.
Теперь, когда вы передаете свою программу кому-то другому, ваша программа будет действовать точно так же, как и на вашем компьютере.: Он попытается открыть базу данных из файла базы данных my.mdf
в вашей программеБинарная папка am.
Этот процесс не будет выполнен на целевом компьютере, если не будет выполнено одно из следующих условий:
SQL Server 2008 Express не установлен.Даже если вы обращаетесь к базе данных напрямую, SQL Server 2008 Express все еще требуется для доступа к базе данных.
my.mdf
не копируется в выходную папку вашей программы.Вы можете легко проверить, открыв решение вашей программы, затем переключитесь на Solution Explorer и посмотрите на Свойства из my.mdf
. Копировать в выходную папку , установленную в Всегда или Копировать, если новее ?
Не зная точного назначения вашей программы,Я бы посоветовал вам взглянуть на SQL Server Compact Edition.В отличие от SQL Server Express, целевому пользователю не нужно его устанавливать;SQL Server Compact Edition развертывается на целевом компьютере либо в составе .NET Framework, либо (если нет) в качестве дополнительной сборки в двоичной папке вашей программы.Вместо файла .mdf
ваша база данных будет находиться в файле .sdf
, и некоторые функции базы данных будут отсутствовать (возможно, такие сложные вещи, как репликация и т. Д., Которые, как правило, не нужны для простой программы).