我有控制台应用程序,并希望以这种方式组织不同构建的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;因为它是由另一个进程使用的。
如何克服这个问题?