如何组织App.config文件?

时间:2015-04-17 12:55:23

标签: visual-studio-2010

我有控制台应用程序,并希望以这种方式组织不同构建的App.config文件,当创建特定构建时,应将相应的配置文件复制到其文件夹中。

有一个名为ReleaseProduction的版本。我使用主App.config文件作为根和App.ReleaseProduction.config文件作为子类型创建了三个。

App.ReleaseProduction.config文件如下所示:

<?xml version="1.0"?>
<configuration  xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    ...
  </appSettings>
</configuration>

项目csproj文件中的一个部分如下所示:

<ItemGroup>
  <None Include="App.config">
    <SubType>Designer</SubType>
  </None>
  <None Include="App.ReleaseProduction.config">
    <DependentUpon>App.config</DependentUpon>
    <SubType>Designer</SubType>
  </None>
</ItemGroup>
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="Exists('App.$(Configuration).config')">
  <TransformXml Source="App.config" Transform="App.$(Configuration).config" Destination="App.config" StackTrace="true" />
</Target>

但是,我收到了此错误消息:

Exception: Не удалось записать конечный файл: Процесс не может получить доступ к файлу "D:\SVN\Concert\trunk\SitemapBuilder\App.config", так как этот файл используется другим процессом.
   в Microsoft.Web.Publishing.Tasks.TransformXml.SaveTransformedFile(XmlTransformableDocument document, String destinationFile)
   в Microsoft.Web.Publishing.Tasks.TransformXml.Execute()
IOException: Процесс не может получить доступ к файлу "D:\SVN\Concert\trunk\SitemapBuilder\App.config", так как этот файл используется другим процессом.
   в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   в System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
   в System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
   в System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
   в Microsoft.Web.Publishing.Tasks.XmlAttributePreservingWriter..ctor(String fileName, Encoding encoding)
   в Microsoft.Web.Publishing.Tasks.XmlFileInfoDocument.Save(String filename)
   в Microsoft.Web.Publishing.Tasks.TransformXml.SaveTransformedFile(XmlTransformableDocument document, String destinationFile)
    D:\SVN\Concert\trunk\SitemapBuilder\ConcertRu.SitemapBuilder.csproj 116 5   ConcertRu.SitemapBuilder

这意味着该进程无法访问此文件&#34; D:\ SVN \ Concert \ trunk \ SitemapBuilder \ App.config&#34;因为它是由另一个进程使用的。

如何克服这个问题?

0 个答案:

没有答案
相关问题