我的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中解决。
答案 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替换占位符文本。我甚至会将占位符文本指定为配置设置,所以你永远不会硬编码。