我刚刚将我的应用程序拆分为Web应用程序和控制台应用程序webjob,我通过添加ado.net将控制台应用程序与我的机器数据库连接,并映射了我的模型。然而,当我作为webjob上传到Azure时,我认为它仍然可能尝试使用相同的数据库,即使它像应用程序的Web作业一样,因为它适用于我本地计算机上的本地数据库,但不是作为webjob。
基本上我所说的是如何在控制台应用程序中完成Web应用程序的发布SQL设置和Web配置转换?
答案 0 :(得分:0)
基于Alex's answer,也许这就是你要找的......
我一直在寻找一个简单的Azure WebJobs项目解决方案,用于在构建期间转换App.config,该服务器与服务器上的Visual Studio和MSBuild一起使用。
<强> 1。将每个配置的XML文件添加到项目中。
通常,您将拥有Debug
和Release
个配置,因此请为您的文件App.Debug.config
和App.Release.config
命名。在我的项目中,我为每种环境创建了一个配置,因此您可能想要尝试一下。
<强> 2。卸载项目并打开.csproj文件进行编辑
Visual Studio允许您在编辑器中编辑 .csproj 文件 - 您只需要先卸载项目。然后右键单击它并选择编辑&lt; ProjectName&gt; .csproj 。
第3。将App。*。配置文件绑定到主App.config
查找包含所有App.config
和App.*.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>