如何从app.config获取另一个项目的汇编版本?

时间:2009-07-29 23:59:53

标签: .net visual-studio configuration assemblies app-config

我在Visual Studio解决方案中有两个项目。我需要其中一个应用程序设置为另一个项目程序集的版本号。

我想在我的project1的app.config中添加如下内容:

<setting name="currentVersion" serializeAs="String">
  <value>
    !(bind.project2.Assembly.FileVersion)
  </value>
</setting>

但显然这段代码不起作用

每次编译新版本时我都可以手动更改值..但是......你知道......忘记了。

3 个答案:

答案 0 :(得分:1)

在进入Visual Studio 2010之前,无法替换配置文件。然后,它只适用于web.config。

答案 1 :(得分:1)

我们使用NAnt来构建我们的应用程序。这可能对你的问题有点过分,特别是如果你还没有使用NAnt来构建你的应用程序。但是有一个名为xmlpoke的nant任务可以在构建时用于在任何xml文件中设置值。例如:我的NAnt构建脚本的一部分如下所示:

<target name="updateconfig">
  <!-- Grab the mySvcSoap value from the already deployed
       appropriate config file -->
  <xmlpeek
    file="${deployment.dir}/Config/appSettings.config"
    xpath="/appSettings/add[@key = 'MyServiceSoap']/@value"
    property="MySvcSoap"/>
  <echo message="MyServiceSoap = ${MySvcSoap}"/>
  <!-- Stick the peeked value into the web.config file system.serviceModel
       configuration. -->
  <xmlpoke
    file="${deployment.dir}/web.config"
    xpath="/configuration/system.serviceModel/client/endpoint[@name = 'MyServiceSoap']/@address"
    value="${MySvcSoap}" />

</target>

您可以从NAnt xmlpoke文档页面获取更多信息。

答案 2 :(得分:-1)

您可以将project1的app.config作为文件引用添加到project2。只需将app.config作为现有项添加到project2,但不要单击“添加”,单击“添加”按钮上的小向下箭头以显示选项列表,然后从该列表中选择“添加为链接”。这样,project1和project2将共享一个app.config文件。请注意,这将导致project2依赖app.config文件的位置。因此,如果要在另一个不需要project1的解决方案中使用project2,则需要小心。

如果您不想在两个项目之间共享整个app.config,可以查看将应用程序设置解压缩到外部配置文件中,并通过configSource从app.config文件中引用它。但是,如果我没有弄错,外部配置文件需要位于app.config文件的同一目录或子目录中。因此,这可能需要在project2或两者中进行预构建步骤,以从共享位置或project1复制该外部文件。