首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClickOnce问题

ClickOnce问题
EN

Stack Overflow用户
提问于 2009-08-12 21:33:59
回答 1查看 199关注 0票数 0

我有一个包含客户端项目、WindowsService项目和ServiceConsole项目的VS2008解决方案。当我部署时,我希望WindowsService和ServiceConsole在同一个文件夹中,因为ServiceConsole需要访问When服务的app.config (即Settings.settings)文件来配置它。使用ClickOnce可以做到这一点吗?如果是这样,实现这一目标的步骤是什么?

我的另一个问题是关于客户端的设置。将安装文件发布到文件服务器上的某个位置后,是否可以修改其应用程序设置?如果是,它们位于何处?我想从我的ServiceConsole应用程序中设置服务器的IP地址,这样安装客户机的用户就不必担心了。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2009-08-12 21:40:21

将app.config作为链接添加到ServiceConsole的项目中(添加现有项,导航到它,然后从" Add“拆分按钮中选择"Add as Link”)。然后,您需要在链接的构建属性中设置为"Content“和"Always Copy”。最后,进入Publish选项卡的"Files“对话框,并确保它在那里列出。您可能需要“显示所有文件”才能看到它。

对于你的第二个问题:我倾向于不写入应用程序的设置文件,因为新写入的设置是按用户的。它们被埋藏在用户配置文件目录中的一个隐藏文件夹中。我建议使用一个固定的位置(比如CSIDL_COMMON_DOCUMENTS),使用下面的代码:

代码语言:javascript
复制
Private Declare Function SHGetSpecialFolderPath Lib "shell32.dll" Alias "SHGetSpecialFolderPathA" _
    (ByVal hwndOwner As IntPtr, <Out()> ByVal lpszPath As StringBuilder, ByVal nFolder As Integer, ByVal fCreate As Boolean) As Boolean
Private Const CSIDL_COMMON_DOCUMENTS As Integer = &H2E

<snip>

Dim lpszPath As New StringBuilder(260)
If SHGetSpecialFolderPath(IntPtr.Zero, lpszPath, CSIDL_COMMON_DOCUMENTS, True) Then
    _sharedDocsDir = lpszPath.ToString()
Else
    Throw New InvalidDataException("Couldn't get working directory root.")
End If

要回答你的最后一个问题,我认为它对我来说很好的原因是我们使用System.Configuration,而不是设计器生成的代码。你可以做的就是把你的设置类放到第三个程序集(第四个?)并且只需通过两个项目引用该程序集。它可能比链接app.config工作得更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1268855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档