我在Visual Studio解决方案中有两个项目。我需要其中一个应用程序设置为另一个项目程序集的版本号。
我想在我的project1的app.config中添加如下内容:
<setting name="currentVersion" serializeAs="String">
<value>
!(bind.project2.Assembly.FileVersion)
</value>
</setting>
但显然这段代码不起作用
每次编译新版本时我都可以手动更改值..但是......你知道......忘记了。
答案 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复制该外部文件。