我有一个包含客户端项目、WindowsService项目和ServiceConsole项目的VS2008解决方案。当我部署时,我希望WindowsService和ServiceConsole在同一个文件夹中,因为ServiceConsole需要访问When服务的app.config (即Settings.settings)文件来配置它。使用ClickOnce可以做到这一点吗?如果是这样,实现这一目标的步骤是什么?
我的另一个问题是关于客户端的设置。将安装文件发布到文件服务器上的某个位置后,是否可以修改其应用程序设置?如果是,它们位于何处?我想从我的ServiceConsole应用程序中设置服务器的IP地址,这样安装客户机的用户就不必担心了。
谢谢你的帮助。
发布于 2009-08-12 21:40:21
将app.config作为链接添加到ServiceConsole的项目中(添加现有项,导航到它,然后从" Add“拆分按钮中选择"Add as Link”)。然后,您需要在链接的构建属性中设置为"Content“和"Always Copy”。最后,进入Publish选项卡的"Files“对话框,并确保它在那里列出。您可能需要“显示所有文件”才能看到它。
对于你的第二个问题:我倾向于不写入应用程序的设置文件,因为新写入的设置是按用户的。它们被埋藏在用户配置文件目录中的一个隐藏文件夹中。我建议使用一个固定的位置(比如CSIDL_COMMON_DOCUMENTS),使用下面的代码:
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工作得更好。
https://stackoverflow.com/questions/1268855
复制相似问题