如何在svn中只忽略一行?

时间:2013-04-18 15:07:05

标签: c# tortoisesvn

我的Config文件中有一行代码:

<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中解决。

3 个答案:

答案 0 :(得分: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应用程序,请确保将Copy to Output Directory设置为在项目中的user.config上始终复制,以便它进入bin目录。)

答案 1 :(得分:2)

你不能忽略一行。

通常,如果您的配置文件必须由所有人修改,则使用this approach

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

答案 2 :(得分:1)

在配置中有占位符文本,就像现在一样,在初始化代码中使用Environment.MachineName替换占位符文本。我甚至会将占位符文本指定为配置设置,所以你永远不会硬编码。