4

我的配置文件中有一行代码:

<appSettings>
    <add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://{ComputerName}/ServiceBusDefaultNamespace;StsEndpoint=https://{ComputerName}:9355/ServiceBusDefaultNamespace;RuntimePort=9354;ManagementPort=9355" />
  </appSettings>

你可以在那里看到 {ComputerName}。此名称取决于当前计算机名称。如果我使用一些源代码控制工具,我会在其他计算机项目中遇到问题,因为我的 connectionString 无法运行。

我怎样才能避免这个问题?

我不能在 svn 中忽略这个文件,因为我将来会发生变化,我可能会丢失这些变化。

也许这个问题可以在 svn 层或 Visual Studio 中解决。

4

3 回答 3

2

您可以使用localhost而不是计算机名称,或者使用该占位符并在运行时替换它。

或者您可以将此密钥放入不进入源代码控制的单独配置文件中:

<!-- In your regular app.config/web.config -->
<appSettings file="user.config">
  <!-- You can have normal stuff here -->
</appSettings>

<!-- In a file called user.config -->
<appSettings>
  <add key="whatever" value="JoesMachine" />
</appSettings>

user.config 根本不在源代码管理中,只需要存在于每个人的机器上。当您设置新的开发人员时,这是一个额外的步骤,但它可能对您有用。(如果它是 Windows 应用程序,而不是 Web 应用程序,请确保在项目中的 user.config 上将复制到输出目录设置为始终复制,以便它进入您的 bin 目录。)

于 2013-04-18T15:14:24.097 回答
2

你不能忽略一行。

一般当你有一个必须由所有人修改的配置文件时,你使用这种方法

由于您使用的是 Visual Studio,因此您可以通过为构建创建不同的配置并在构建时使用这些配置来修改最终配置文件来避免这种情况。

于 2013-04-18T15:16:19.963 回答
1

在配置中有占位符文本,就像现在一样,在初始化的代码中使用 Environment.MachineName 替换占位符文本。我什至会将占位符文本分配为配置设置,这样您就永远不会对其进行硬编码。

于 2013-04-18T15:13:49.650 回答