gpt4 book ai didi

visual-studio - 如何使用访问本地 MDF 数据库文件的 ClickOnce 部署 WPF 应用程序?

转载 作者:行者123 更新时间:2023-12-04 06:11:56 26 4
gpt4 key购买 nike

我在 Visual Studio 中制作了一个简单的 WPF 应用程序。

它使用以下连接字符串访问其自己目录中的自己的数据库文件:

System.Environment.CurrentDirectory + @"\Data\" + databaseFileName;

我点了发布,基本全部默认(CD/DVD发布,不在线更新)。

我将设置文件夹复制到另一台计算机。

在新电脑上,我双击 setup.exe

它安装正常,在开始菜单中,但是当它运行时,它得到这个错误:

alt text http://www.deviantsart.com/upload/11jfc2c.png

我已经在 project/properties/security 中为应用程序授予了所有权限:

alt text http://www.deviantsart.com/upload/si6urj.png

我必须更改什么才能使这个使用 ClickOnce 部署的应用程序可以在 .exe 文件下的相对目录中找到它的数据库,即“Data/MainData.mdf”?

附录下面答案中的修复适用于 Windows 7,但在 Windows XP 上,我得到这个:

alt text http://www.deviantsart.com/upload/1pds19l.png

最佳答案

首先,您将其部署为数据,您的连接字符串显示了这一点。 DataDirectory 转换为 ClickOnce 缓存下的 Data 文件夹,这是 ClickOnce 放置文件(如果您将其标记为数据)的位置。

如果您不想在此处部署它,但希望它相对于 [exe],请进入“发布”选项卡中的“应用程序文件”对话框并将其从 Include(Data) 更改为仅 Include。然后它会把它放在一个相对于exe所在位置的位置。 (即,如果您将它放在项目的文件夹中,它将把它放在部署的 exe 下的相应文件夹中)。不要忘记更改连接字符串。

如果您将它部署在那个位置,它会在您发布更新时丢失。 (只是让你知道)。这里有一个关于您可以将数据放在其他地方以避免此问题的想法:

How to keep your data safe from ClickOnce updates

您需要动态创建连接字符串,Path.Combine(System.Windows.Forms.Application.StartupPath, "Data\mydatabase.mdf");或者它将从当前程序集的默认路径开始(在您的情况下为 .NET)。

--加法--

啊,WPF,抱歉,错过了。您基本上需要获取运行 exe 的文件夹。看看这是否有帮助:

在 System.Reflection 命名空间中:

Assembly assemblyInfo = Assembly.GetExecutingAssembly();
if (assemblyInfo != null)
{
//try Path.GetDirectoryName(assemblyInfo.Location)
//if that doesn't work, try assemblyInfo.CodeBase
}

(在 VSTO 应用程序中,由于 dll 的阴影,您必须使用 CodeBase。我认为 Location 适用于常规应用程序。)

罗宾点网

关于visual-studio - 如何使用访问本地 MDF 数据库文件的 ClickOnce 部署 WPF 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com