.NET Console应用程序连接字符串转换

时间:2018-03-27 21:06:41

标签: c# .net asp.net-mvc

我刚刚将我的应用程序拆分为Web应用程序和控制台应用程序webjob,我通过添加ado.net将控制台应用程序与我的机器数据库连接,并映射了我的模型。然而,当我作为webjob上传到Azure时,我认为它仍然可能尝试使用相同的数据库,即使它像应用程序的Web作业一样,因为它适用于我本地计算机上的本地数据库,但不是作为webjob。

基本上我所说的是如何在控制台应用程序中完成Web应用程序的发布SQL设置和Web配置转换?

1 个答案:

答案 0 :(得分:0)

基于Alex's answer,也许这就是你要找的......

我一直在寻找一个简单的Azure WebJobs项目解决方案,用于在构建期间转换App.config,该服务器与服务器上的Visual Studio和MSBuild一起使用。

<强> 1。将每个配置的XML文件添加到项目中。

通常,您将拥有DebugRelease个配置,因此请为您的文件App.Debug.configApp.Release.config命名。在我的项目中,我为每种环境创建了一个配置,因此您可能想要尝试一下。

<强> 2。卸载项目并打开.csproj文件进行编辑

Visual Studio允许您在编辑器中编辑 .csproj 文件 - 您只需要先卸载项目。然后右键单击它并选择编辑&lt; ProjectName&gt; .csproj

第3。将App。*。配置文件绑定到主App.config

查找包含所有App.configApp.*.config引用的项目文件部分。您会注意到他们的构建操作设置为None

<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />

首先,将所有人的构建操作设置为Content 接下来,在主App.config上创建所有配置特定的文件依赖,以便Visual Studio将它们分组为设计器和代码隐藏文件。

将上面的XML替换为下面的XML:

<Content Include="App.config" />
<Content Include="App.Debug.config" >
  <DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="App.Release.config" >
  <DependentUpon>App.config</DependentUpon>
</Content>

<强> 4。激活变换魔法

之后的文件末尾
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

在最后

之前
</Project>

插入以下XML:

  <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
  <Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')">
    <!-- Generate transformed app config in the intermediate directory -->
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
    <!-- Force build process to use the transformed configuration file from now on. -->
    <ItemGroup>
      <AppConfigWithTargetPath Remove="app.config" />
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
        <TargetPath>$(TargetFileName).config</TargetPath>
      </AppConfigWithTargetPath>
    </ItemGroup>
  </Target>

现在您可以重新加载项目,构建它并享受App.config转换!

<强> FYI

确保您的App.*.config文件具有正确的设置:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
     <!--magic transformations here-->
</configuration>