标签: slowcheetah

如何让msbuild任务对一组文件进行配置转换?

我试图转换我所拥有的项目中的所有web.config文件,这是我的树结构:

  • Transform.bat
  • 变换
    • ConfigTransform.proj
    • Web.Transform.config
  • 网站
    • web.config中
    • 查看
      • web.config中

还有更多的web.config文件,但我们的想法是,它会找到所有这些文件并对它们应用相同的配置转换.

我从我发现的博客文章中得到了一些提示,但是我在最后一步,即实际的转变中陷入困境.中间还有一些我不喜欢的粗略部分(我不太明白我在做什么,我显然做错了).这是我到目前为止的地方:

<Project ToolsVersion="4.0" DefaultTargets="Transform" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <UsingTask TaskName="TransformXml" AssemblyFile="Tools\Microsoft.Web.Publishing.Tasks.dll"/>

    <PropertyGroup>
        <SitePath>..\..\Website</SitePath>
        <WebConfigTransformInputFile>$(SitePath)\Web.config</WebConfigTransformInputFile>
        <WebConfigTransformFile>Web.Transform.config</WebConfigTransformFile>
        <OutDir>..\N\N\</OutDir>

    </PropertyGroup>

    <ItemGroup>
        <_FilesToTransform Include="$(SitePath)\**\web.config"/>
    </ItemGroup>

    <Target Name="Transform">

    <MakeDir Directories="@(_FilesToTransform->'$(OutDir)%(RelativeDir)')" />

    <TransformXml Source="@(_FilesToTransform->'$(OutDir)%(RelativeDir)%(Filename)%(Extension)')"
                  Transform="$(WebConfigTransformFile)"
                  Destination="@(_FilesToTransform->'$(OutDir)%(RelativeDir)%(Filename)%(Extension)')" />
    </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

我的Transform.bat看起来像这样:

%systemroot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe %CD%\Transforms\ConfigTransform.proj
Run Code Online (Sandbox Code Playgroud)

因此,当我调用批处理时,会创建相应的目录.然而,正如你所看到的,我必须对OutDir有点创意,使它成为..\N\N.出于某种原因,如果我不这样做,OutDir路径将与输入目录完全相同.所以我显然需要在MakeDir中改变一些东西,但我不确定是什么.

真正的问题出现在它开始进行变换时.我试图保持TransformXml Source参数像这样或类似:

@(_FilesToTransformNotAppConfig->'%(FullPath)')
Run Code Online (Sandbox Code Playgroud)

后者给我一个错误"无法打开源文件:不支持给定路径的格式." 而前者给了我这个输出:

Build started 30-4-2012 14:02:48.
Project "D:\Dev\transform\DoTransforms\Transforms\ConfigTransform.proj" on node 1 (default targets).
Transform:
  Creating directory "..\N\N\..\..\Website\Views\".
  Transforming Source File: ..\N\N\..\..\Website\Views\Web.config;..\N\N\..\..\Website\Web.config
D:\Dev\transform\DoTransforms\Transforms\ConfigTransform.proj(32,2): error : Could not open Source file: Could not …
Run Code Online (Sandbox Code Playgroud)

msbuild msbuild-task web-config-transform slowcheetah

8
推荐指数
1
解决办法
9079
查看次数

SlowCheetah:类库项目中的已转换文件未复制到引用的项目

场景:

我有一个带有自定义.config文件的类库项目.这些配置文件的构建操作设置为"内容"和"始终复制".然后,在同一解决方案中的至少4-5个控制台应用程序中引用此库项目.构建解决方案时,类库的程序集和自定义配置文件将复制到引用的项目bin文件夹中.

我想做什么:

使用SlowCheetah转换自定义配置文件

问题:

虽然SlowCheetah转换了类库项目中的配置文件,但它不会将转换后的文件复制到引用的项目中.即它始终复制源/原始文件.

找到了几个其他线程,但没有一个是基于SlowCheetah的解决方案,任何建议都会有所帮助.请注意,我使用的是Install Shield Limited Edition,因此该解决方案需要适用于.msi/setup文件.此外,我不想链接文件并对链接文件应用转换,因为我将不得不对所有引用的项目进行相同的转换.

谢谢

app-config config-transformation slowcheetah

8
推荐指数
1
解决办法
1111
查看次数

slowcheetah转换配置文件中元素的值

我知道如何使用SlowCheetah更改属性的值,但是如何更改元素的值.

app.Debug.config:

 <applicationSettings>
  <MyProgram.Properties.Settings>
    <setting name="aName" serializeAs="String">
      <value>myName</value>
    </setting>
  </MyProgram.Properties.Settings>
 </applicationSettings>
Run Code Online (Sandbox Code Playgroud)

这是我在app.Staging.config中失败的尝试:

 <applicationSetting>
   <MyProgram.Properties.Settings>
     <setting name="aName" serializeAs="String">
        <value xdt:Transform="Replace" xdt:Locator="Match(value)">newName</value>
     </setting>
   </MyProgram.Properties.Settings>
</applicationSetting>
Run Code Online (Sandbox Code Playgroud)

c# configuration xpath configurationmanager slowcheetah

7
推荐指数
1
解决办法
3629
查看次数

使用SlowCheetah和ASP.NET网站项目进行Web.config转换

我正在尝试ASP.NET Web site project在Visual Studio 2010中使用SlowCheetah XML Transforms和(不是ASP.NET Web应用程序项目).

当我右键单击Web.configASP.NET网站项目中的文件时,我Add Transform在上下文菜单中看不到" "项.

(注意:尝试使用ASP.NET Web应用程序项目时效果很好).

  • 是否可以使用SlowCheetah ASP.NET Web site project
    或者"设计"是不可能的,因为这种项目有局限性?

可能有一个解决方法合并*.targets" Web部署项目2010 "和SlowCheetah 的" "文件...

asp.net xslt web-deployment-project vs-web-site-project slowcheetah

7
推荐指数
1
解决办法
2859
查看次数

我可以在NuGet包中包含web.release.config.transform吗?

我们使用SlowCheetah配置转换来管理配置,所以在我的每个网络应用程序中我都有:

> Web.config
  >  Web.debug.config
  >  Web.release.config
Run Code Online (Sandbox Code Playgroud)

我想包括appSetting在将被添加到时可以安装包(然后Web.release.config文件NuGet包变换元件应用时,该项目在Release模式实际上是打包)

按照用于web.config通过使用web.config.transform文件转换实际文件的方法,我尝试将一个NuGet\Content\web.release.config.transform文件添加到我的NuGet包中,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
 <appSettings>
  <add key="apiUsername" value="my_user" xdt:Transform="Replace" xdt:Locator="Match(key)" />
  <add key="apiPassword" value="my_pass" xdt:Transform="Replace" xdt:Locator="Match(key)" />
 </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

不行.web.config文件被转换,但web.*.config文件未被修改:

Attempting to resolve dependency 'NewtonSoft.Json (? 4.5.7)'.
Successfully installed 'Newtonsoft.Json 4.5.7'.
Successfully installed ''MyProject.Package 1.0.7409-unstable'.
Successfully added 'Newtonsoft.Json 4.5.7' to FortKnox.Web.
'web.debug.config' already exists. Skipping...
'web.release.config' already exists. Skipping...
Successfully added 'MyProject.Package 1.0.7409-unstable' to MyThing.Web
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

web-config web-config-transform nuget slowcheetah

7
推荐指数
0
解决办法
1037
查看次数

使用slowCheetah转换用户设置

我试图根据使用slowCheetah的构建配置文件更改我的默认用户配置,但是我无法找到正确的方法来使用它

<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="MyApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <MyApp.Properties.Settings>
            <setting name="Url" serializeAs="String">
                <value>
                    something
                </value>
            </setting>
        </MyApp.Properties.Settings>
    </userSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我已经试了

<!-- &amp it's an & escaped in xml-->
<add key="MyApp.Properties.Settings.Url" value="www.google.com" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我怎样才能做到这一点?

.net c# settings slowcheetah

7
推荐指数
1
解决办法
2465
查看次数

在3.5 Web窗体应用程序中使用SlowCheetah配置转换Web.config

我将SlowCheetah下载到旧的.Net 3.5 Web表单应用程序中,以便将转换添加到web.config.

我已经将SlowCheetah与Windows服务和控制台应用程序一起使用,以便在过去成功转换app.config.在这些情况下,配置将被转换并作为ApplicationName.exe.config放入bin中.

但是,使用此Web表单应用程序时,配置文件永远不会在bin中结束,因为Web表单站点是使用.dll放在bin中而构建的,IIS指向根目录以运行站点.因此,不是将web.config包含在构建过​​程中并打包在bin中,而是将其单独留在根位置.

没有转换应用于根目录中的web.config,这是一件好事,因为根目录中的web.config位于源代码管理中,并且是我们执行转换的文件.

我很高兴将web.config包含在构建中,以便slowCheetah转换它然后将其放入bin中.然后我们必须手动将它从bin中取出并将其放回到我们服务器的根级别,但是进行转换是值得的.

有没有人知道如何让变换运行我的web.config或将其包含在构建过​​程中,以便slowCheetah可以发挥其魔力?

谢谢!

更新

我修改了web.config的属性,它现在包含在构建中,但是,转换仍未应用于它.

构建操作:嵌入式资源

复制到输出控制器:始终复制

msbuild webforms asp.net-3.5 slowcheetah

7
推荐指数
1
解决办法
2642
查看次数

从 Visual Studio 启动 ASP.NET Core 不会从构建文件夹启动

当您从 Visual Studio (2017) 启动 ASP.NET Core 项目时,它假定工作目录是源代码所在的位置,而不是实际放置构建文件的位置。

这意味着当我运行我的项目时,它从 读取配置文件C:\Path\To\My\Project\appsettings.json,而不是从C:\Path\To\My\Project\bin\Debug\appsettings.json.

当我调试这段代码时,我可以看到情况是这样的:

WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureAppConfiguration((context, config) => {
        config.SetBasePath(context.HostingEnvironment.ContentRootPath);
        config.AddJsonFile("appsettings.json", true, false);
    });
Run Code Online (Sandbox Code Playgroud)

其中ContentRootPath指向项目文件夹,而不是放置构建文件的位置。

我可能可以通过设置Working Directoryin来解决这个问题Project Properties > Debug,但是由于我们还使用配置转换(SlowCheetah),每个开发人员都将拥有自己的调试输出构建配置(bin\Debug[CustomConfiguration]),并且.csproj对一个开发人员进行更改会破坏所有其他开发人员的配置。

有没有什么方法可以让 ASP.NET Core 从构建文件所在的位置而不是项目文件夹中读取配置文件,而无需更改Working Directory,但仍然适用于多个“构建配置”?

c# appsettings slowcheetah asp.net-core visual-studio-2017

7
推荐指数
1
解决办法
1770
查看次数

跟踪sitecore中的NullReferenceExceptions

我正在尝试跟踪在加载任何网页时出现在sitecore 6.5上的NullReferenceException:

[NullReferenceException: Object reference not set to an instance of an object.]
   Sitecore.Diagnostics.Log.Error(String message, Exception exception, Type ownerType) +133
   Sitecore.Diagnostics.Log.Error(String message, Type ownerType) +45
   Sitecore.Configuration.Factory.LoadAutoIncludeFiles(ConfigPatcher patcher, String folder) +680
   Sitecore.Configuration.Factory.LoadAutoIncludeFiles(XmlNode element) +63
   Sitecore.Configuration.Factory.GetConfiguration() +347
   Sitecore.Diagnostics.LoggerFactory..cctor() +67

[TypeInitializationException: The type initializer for 'Sitecore.Diagnostics.LoggerFactory' threw an exception.]
   Sitecore.Diagnostics.LoggerFactory.GetLogger(Type type) +17
   Sitecore.Diagnostics.Log.Error(String message, Exception exception, Type ownerType) +93
   Sitecore.Diagnostics.Log.Error(String message, Type ownerType) +45
   Sitecore.Configuration.Factory.LoadAutoIncludeFiles(ConfigPatcher patcher, String folder) +680
   Sitecore.Configuration.Factory.LoadAutoIncludeFiles(XmlNode element) +63
   Sitecore.Configuration.Factory.GetConfiguration() +347
   Sitecore.Configuration.Factory.GetConfigNode(String xpath, Boolean assert) +82
   Sitecore.Configuration.Factory.GetConfigNode(String xpath) +29
   Sitecore.Resources.Media.UploadWatcher.InitializeIgnoreList() …
Run Code Online (Sandbox Code Playgroud)

iis-7 sitecore visual-studio-2010 sitecore6 slowcheetah

6
推荐指数
1
解决办法
6976
查看次数

慢印度豹添加转换不会出现

我想使用Slow Cheetah转换.config文件。当前,我正在使用Visual Studio 2017,为此,我从nuget安装了Slow Cheetah 2.5.48,但是右键单击配置文件时未出现“添加转换”。

visual-studio slowcheetah

6
推荐指数
3
解决办法
7048
查看次数