小编Dan*_*tch的帖子

具有多种环境的MsBuild和MsDeploy

是否有良好的模式可以将解决方案配置映射到环境并使用MsDeploy进行每个环境的打包?

最短版本:抓取此文件,并尝试更改.msbuild文件,以便创建包.


细节

我有一个包含大量库和ASP.NET MVC应用程序的解决方案.我使用msbuild文件驱动构建,该文件调用主解决方案,然后执行其他操作.我想使用新的msdeploy包来准备一个.zip文件供以后分发,但我遇到了各种各样的困难.

我的解决方案有4种配置:Local,Dev,Test,和Prod,符合我要地图的环境哪个.在该解决方案中,所有库都具有通常的模式DebugRelease模式.例如,在Local解决方案模式下,所有库都以Debug模式编译.然后,主应用程序具有与解决方案匹配的环境,因此我可以拥有Web.Dev.config等等,这似乎是使用事物的自然方式.

如果我打包像这样:

<Target Name="BuildWebPackage">
  <MSBuild Projects="..\Publisher\Site\Site.vbproj"
           Targets="Package"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题Configuration=Local是错误地映射到Site.vbproj引用的库项目,并且它无法编译它们.


我看到了两种可能的解决方案:一种是我无法正常工作,另一种是非常难看.

尝试1

我尝试Package通过解决方案调用目标(在此示例中,"Applications"是Site项目所在的解决方案文件夹...我已经简化了这篇文章,因为解决方案中实际上有多个应用程序.)

<Target Name="BuildWebPackage">
  <MSBuild Projects="..\Publisher\Publisher.sln"
           Targets="Applications\Site:Package"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

我认为这种SolutionFolder\ProjectName:Target语法是如何做到的,因为:Clean运行...但是,这会抛出

error MSB4057: The target "Applications\Site:Package" does not exist in the project.
Run Code Online (Sandbox Code Playgroud)

尝试2

现在对于丑陋的解决方案:如果我修改所有库,为这4种解决方案配置提供4个额外配置,它就可以工作.但是,如果我想稍后与具有不同环境的项目共同开发共享库,那么这是一个丑陋而且实际上是一个糟糕的计划.此外,这些环境与库无关,只有在使用库的顶级应用程序的上下文中才有意义.口味不好.


咦?

我喜欢解决方案中的多个环境,以及花哨的新Web.config替换东西,但我不知道如何Package在这种情况下调用msdeploy 任务,因此我可以在TeamCity中构建包.

(注意,我可能不想调用msdeploy命令行,因为它用于将IIS应用程序转换为包.不是我在这里做的.)


样品

再一次,我已经完全被困在这里,所以如果你想帮助实验,我已经把这个样本解决方案放在一起了.

.net msbuild package msdeploy asp.net-mvc-2

33
推荐指数
1
解决办法
1万
查看次数

EntityFramework4.1的.Local().ToBindingList(),如何过滤呢?

示例模型:客户 - >订单

contex.Order.Load();
orderBindingSource.DataSource = context.Order.Local().ToBindingList();
Run Code Online (Sandbox Code Playgroud)

那么,如何过滤?例如 context.Order.Where(m=>m.customerID > 1)

我想获得与Local属性返回的ObservableCollection保持同步的BindingList实现.

entity-framework entity-framework-4.1

12
推荐指数
1
解决办法
2731
查看次数

强制泛型和接口上的F#类型推断保持松散

我们这里真的很开心.我已经在数据的具体表示上测试了一堆树同步代码,现在我需要对它进行抽象,以便它可以运行任何支持正确方法的源和目标.[实际上,这将是Documentum,SQL层次结构和文件系统等来源; 使用Solr和自定义SQL交叉引用存储等目标.

棘手的部分是,当我递归一个类型的树T并同步到一个类型的树时U,在某些文件中,我需要在当前节点处对该类型V执行第二种类型的"子同步" U.(V代表阶层结构的内部文件......),并在F#的类型推理引擎将立即围绕推动我在圈子里就这一点,因为我尝试添加子同步到V.

我在一个代表这个TreeComparison<'a,'b>,所以上面的东西导致a TreeComparison<T,U>和子比较TreeComparison<V,U>.

问题是,只要我TreeComparison<V,'b>在其中一个类方法中提供具体V,当我希望第一个类型参数保持泛型(when 'a :> ITree)时,类型会传播所有推断.也许我可以对TreeComparison<V,'b>价值做一些打字?或者,更有可能的是,推断实际上告诉我,在我思考这个问题的方式中,某些东西本来就被打破了.

这对于压缩来说真的很棘手,但是我想给你可以粘贴到脚本中的工作代码并进行实验,所以一开始就有很多类型......如果你想跳过,核心内容就在最后.通过ITree对大多数类型的实际比较和递归进行了切割,因为没有必要看到我正在敲打的推理问题.

open System

type TreeState<'a,'b> = //'
  | TreeNew of 'a
  | TreeDeleted of 'b
  | TreeBoth of 'a * 'b

type TreeNodeType = TreeFolder | TreeFile | TreeSection

type ITree =
  abstract NodeType: TreeNodeType
  abstract Path: string
      with get, set

type ITreeProvider<'a when …
Run Code Online (Sandbox Code Playgroud)

generics f# type-inference interface

11
推荐指数
1
解决办法
1732
查看次数

在较大的应用程序中托管.fsx脚本

我想将我的F#库作为可编写脚本的数据操作工具公开.

最理想的是,我希望这个脚本工具不需要使用fsi等进行完整的F#安装.

有没有办法链接到FSI库以执行F#代码中的脚本?我的google-fu在这个问题上让我失望了,fsi的F#来源有点纠结.

scripting f# interactive

5
推荐指数
1
解决办法
527
查看次数

Git:无法重定向/解析'git fetch --dry-run'命令的输出

git fetch控制台上打印的命令输出消息有什么特别之处?我无法使用grep,xargs等等.也无法将输出重定向到文件..

注意:我正在使用git fetch --dry-run命令

[sangeeth@localhost santest-code]$ 
[sangeeth@localhost santest-code]$ git fetch --dry-run > /tmp/1
From ssh://git.code.sf.net/p/santest/code
   9f068d0..2b9dc4e  master     -> origin/master
[sangeeth@localhost santest-code]$ 
[sangeeth@localhost santest-code]$ cat /tmp/1              <= no data
[sangeeth@localhost santest-code]$  
[sangeeth@localhost santest-code]$ git fetch --dry-run | grep "ssh"     <= output has both lines
From ssh://git.code.sf.net/p/santest/code
   9f068d0..2b9dc4e  master     -> origin/master
[sangeeth@localhost santest-code]$ 
[sangeeth@localhost santest-code]$ git --version 
git version 1.7.11.4
[sangeeth@localhost santest-code]$ 
Run Code Online (Sandbox Code Playgroud)

我正在尝试解析git fetch --dry-run命令的输出以检查local(master)分支是否与remote(origin/master)分支是最新的.

git bash shell io-redirection

4
推荐指数
1
解决办法
2892
查看次数

升级项目时F#3.0编译器错误FS0193

FSharp.Core在构建我的一个较大项目时,我遇到了一个与奇怪相关的错误,并且该错误不包含任何位置信息,以帮助我找出问题所在.

编译错误是 error FS0193: The module/namespace 'Microsoft.FSharp.Linq.RuntimeHelpers' from compilation unit 'FSharp.Core' did not contain the namespace, module or type 'LeafExpressionConverter'

起初我以为是因为该项目使用的是旧的Powerpack LINQ,所以我把它剥离了.然后我想也许它与使用Entity Framework 4.3而不是5.0有关,所以我升级了.同样的错误.我仍在编译.NET 4.0,而不是4.5 ......也许这是原因的一部分?

我将Doctypes.fsprojXML与同一解决方案中的其他项目进行了比较,一切看起来都很正常.该FSharp.Core参考根本<Reference Include="FSharp.Core" />

这是一个非常大的项目,所以创建一个小的可重现版本的这个错误可能需要一段时间来弄清楚,我想知道这里是否有人有一个快速的答案.

这是MSBUILD输出:

19> C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\fsc.exe -o:obj\Debug\DTC.Doctypes.dll -g --debug:full --noframework --define:DEBUG --define:TRACE --doc:bin\Debug\Doctypes.XML --optimize- --tailcalls- --resource:statutes_ebook_cover.jpg -r:A:\svn\dtc\Publisher\Doctypes\bin\Debug\CsvHelper.dll -r:A:\svn\dtc\Publisher\Data\bin\Debug\DTC.Data.dll -r:A:\svn\dtc\Publisher\Formats\bin\Debug\DTC.Formats.dll -r:A:\svn\dtc\Publisher\Parser\bin\Debug\DTC.Parser.dll -r:A:\svn\dtc\Publisher\ReferenceParser\bin\Debug\DTC.ReferenceParser.dll -r:A:\svn\dtc\Publisher\Shared\bin\Debug\DTC.Shared.dll -r:A:\svn\dtc\Publisher\Solr\bin\Debug\DTC.Solr.dll -r:A:\svn\dtc\Publisher\Utilities\bin\Debug\DTC.Utilities.dll -r:A:\svn\dtc\Publisher\Doctypes\bin\Debug\EntityFramework.dll -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v4.0\FSharp.Core.dll" -r:A:\svn\dtc\Publisher\packages\HtmlAgilityPack.1.4.6\lib\Net40\HtmlAgilityPack.dll -r:A:\svn\dtc\Publisher\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll -r:A:\svn\dtc\Publisher\packages\LegislativeData.1.0.2773.180\lib\net40\LegislativeData.dll -r:A:\svn\dtc\Publisher\packages\LibrarianData.1.0.2773.6\lib\net40\Librarian.Data.dll -r:A:\svn\dtc\Lib\Office12\Microsoft.Office.Interop.Excel.dll -r:A:\svn\dtc\Lib\Office12\Microsoft.Office.Interop.Word.dll -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll" -r:A:\svn\dtc\Publisher\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll -r:A:\svn\dtc\Publisher\Repository\bin\Debug\Repository.dll -r:"C:\Program …
Run Code Online (Sandbox Code Playgroud)

f# f#-3.0

4
推荐指数
1
解决办法
1641
查看次数