我有这个目标
<Target Name = "AddLocalCertificate">
<MSBuild.ExtensionPack.Security.Certificate TaskAction="Add" FileName="$(CertificateLocation)" CertPassword="$(CertificatePassword)">
<Output TaskParameter="Thumbprint" PropertyName="CertificateHash"/>
</MSBuild.ExtensionPack.Security.Certificate>
</Target>
Run Code Online (Sandbox Code Playgroud)
在另一个目标中这个绑定声明
<MSBuild.ExtensionPack.Web.Iis7Binding
CertificateHash="$(CertificateHash)"
TaskAction="Add" MachineName="$(MachineName)" Name="$(SiteName)" BindingInformation="*:$(HttpsPort):$(SiteName)" BindingProtocol="https"/>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行目标时,我得到了错误
使用证书创建绑定:拇指打印'DBE4964B4C4D0F185E8B1D421D736390AE586EBF'存储在'MY'C:\ Projects\RC19_Release2\ExternalBinaries\MSBuildGlobalFiles\ManageWebsite.targets(154,3)中:错误:COMException:指定的登录会话不存在.它可能已经被终止了.(来自HRESULT的异常:0x80070520)\ r C:\ Projects\RC19_Release2\ExternalBinaries\MSBuildGlobalFiles\ManageWebsite.targets(154,3):错误:
当我查看IIS时,它创建了网站并且绑定就在那里,但它似乎无法找到证书,如果我查看IIS上的"服务器证书",那么我看不到我的证书.
如果我执行MMC - >证书管理并转到当前用户,那么我可以在那里看到我的证书.
如何从IIS/msbuild中访问该证书或让msbuild在正确的位置创建它以使IIS满意?
msbuild扩展帮助页面是http://www.msbuildextensionpack.com/help/4.0.5.0/html/45763eac-8f14-417d-9b27-425161982ffe.htm,但它对我帮助不大!
谢谢
作为构建脚本的一部分,我们从子目录复制用户消息文件,并希望将子目录的名称附加到消息文件中。即msg \ 0 \ message.std> msg \ message0.std
我尝试使用
<Copy SourceFiles="@(MessageFiles)"
DestinationFiles="@(MessageFiles->'$(BuildRoot)\%(Filename)%(RecursiveDir)%(Extension)'"/>
Run Code Online (Sandbox Code Playgroud)
但是,这试图将文件复制到.. \ message0.std。
无论如何,还是要抑制%(RecursiveDir)中的尾随'\'或以另一种方式组成目标名称?
我正在尝试使用cmd或jenkins构建作业使用msbuild运行构建文件.
该项目的结构是

演示在这里:www.saramgsilva.com/wp7/sarasilvademo.rar
现在我有3种不同的方式来运行fxcop,但我总是有问题.
1)在cmd中转到根文件然后运行
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\SaraSilva.WP7.build /target:FxCop
Run Code Online (Sandbox Code Playgroud)
这显示错误:退出代码128
2)在cmd中转到根文件然后运行
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\SaraSilva.WP7C.build /target:FxCop
Run Code Online (Sandbox Code Playgroud)
这不会创建buildartifacts\FxCop\FxCopAnalysis.xml文件.
3)在cmd中转到根文件然后运行
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\SaraSilva.WP7.build /target:TestWithCoverage
Run Code Online (Sandbox Code Playgroud)
和
C:\SaraSilvaDemo\tools\FxCop-1.36\FxCopCmd.exe /file:C:\SaraSilvaDemo\buildartifacts /directory:C:\SaraSilvaDemo\buildartifacts\ /rule:C:\SaraSilvaDemo\tools\FxCop-1.36\Rules /out:C:\SaraSilvaDemo\buildartifacts\fxcop-result.xml
Run Code Online (Sandbox Code Playgroud)
结果是:
Microsoft(R)FxCop命令行工具,版本1.36(9.0.30729.1)版权所有(C)2007 Microsoft Corporation.版权所有.
加载DesignRules.dll ...加载GlobalizationRules.dll ...加载InteroperabilityRules.dll ...加载MobilityRules.dll ...加载NamingRules.dll ...加载PerformanceRules.dll ...加载PortabilityRules.dll ...加载SecurityRules.dll ...已加载UsageRules.dll ...无法加载Cimbalino.Phone.Toolkit.dll.无法加载GalaSoft.MvvmLight.Extras.WP71.dll.无法加载GalaSoft.MvvmLight.WP71.dll.无法加载Microsoft.Phone.Controls.dll.无法加载Microsoft.Practices.ServiceLocation.dll.无法加载mscorlib.Extensions.dll.无法加载NLog.dll.已加载nunit.framework.dll ...已加载SaraSilva.WP7.AllTests.dll ...无法加载SaraSilva.WP7.App.dll.无法加载SaraSilva.WP7.Model.dll.无法加载SaraSilva.WP7.SampleData.dll.无法加载SaraSilva.WP7.SchedTask.dll.无法加载SaraSilva.WP7.Service.dll.加载System.Core.dll ...无法加载System.dll.无法加载System.Windows.Browser.dll.加载System.Windows.dll ...无法加载System.Windows.Interactivity.dll.无法加载System.Xml.dll.无法加载TombstoneHelper.dll.初始化Introspection引擎...无法解析对System.Net的引用.分析完成.
注意:找不到一个或多个引用的程序集.使用'/ directory'开关指定其他程序集引用搜索路径.
- 没有进行分析; 必须至少指定一个有效的规则程序集和一个有效的目标文件.
- 2总分析引擎异常.将报告写入C:\ SaraSilvaDemo\buildartifacts\fxcop-result.xml ...完成.
我不知道该怎么办 :(
我有一个在iis中托管的wcf应用程序,我正在尝试使用webdeploy打包.使用visual studio工具一切都很好,但我还需要创建一个日志文件夹并设置权限.为此,我在我的web项目中创建了一个ProjectName.wpp.target文件.该文件看起来像这样
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CreateLogsDirectory" AfterTargets="AddIisSettingAndFileContentsToSourceManifest">
<!-- This must be declared inside of a target because the property
$(_MSDeployDirPath_FullPath) will not be defined at that time. -->
<ItemGroup>
<MsDeploySourceManifest Include="dirPath">
<Path>$(_MSDeployDirPath_FullPath)\logs</Path>
<enableRule>DoNotDeleteRule</enableRule>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
<Target Name="DeclareCustomParameters" AfterTargets="AddIisAndContentDeclareParametersItems">
<!-- This must be declared inside of a target because the property
$(_EscapeRegEx_MSDeployDirPath) will not be defined at that time. -->
<ItemGroup>
<MsDeployDeclareParameters Include="LogsDirectoryPath">
<Kind>ProviderPath</Kind>
<Scope>dirPath</Scope>
<Match>^$(_EscapeRegEx_MSDeployDirPath)\\logs$</Match>
<Value>$(_DestinationContentPath)/log</Value>
<ExcludeFromSetParameter>True</ExcludeFromSetParameter>
</MsDeployDeclareParameters>
</ItemGroup>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
我可以看到dirPath提供程序已添加到sourcemanifest文件中,但是当我部署该程序包时,它会尝试创建源文件路径.本质上,LogsDirectoryPAth项不替换路径.谁能指出我需要做什么?谢谢 !
我遇到了msdeploy使用的SetParameters.xml文件的问题.
在我的网站中,我创建了一个parameters.xml文件,其中包含以下内容:
<parameters>
<parameter name="enableRule" defaultValue="DoNotDeleteRule"></parameter>
</parameters>
Run Code Online (Sandbox Code Playgroud)
在构建部署包期间,此参数将添加到setParameters.xml文件中,该文件如下所示:
<parameters>
<setParameter name="IIS Web Application Name" value="mywebsite/myservice/>
<setParameter name="enableRule" value="DoNotDeleteRule" />
</parameters>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行msdeploy(使用包的cmd)时,将忽略该参数.我尝试通过添加-setParamFile属性来调用cmd,但这没有任何区别......
有人可以帮我弄这个吗 ?
我有一个FilesToExclude2.txt文件,其中包含所有类似的排除项:
*.settings
*#*
*.vbproj*
*.csproj*
*\Errors\*
*\Errors
*\_vti_*\*
*\_vti_*
*\CVS\*
Run Code Online (Sandbox Code Playgroud)
在我的任务文件中,有一个复制任务
<Target Name="CustomModuleCopy">
<ItemGroup>
<ModuleFiles Include="$(SolutionModuleName)\$(ProjectModuleName)\**\*.*" />
<FileToExclude Include="$(BasePath)\$(SolutionModuleName)\FilesToExclude2.txt" />
</ItemGroup>
<ReadLinesFromFile File="@(FileToExclude)">
<Output TaskParameter="Lines" ItemName="FileContents" />
</ReadLinesFromFile>
<Copy SourceFiles="@(ModuleFiles)" DestinationFiles="@(ModuleFiles->'$(DestFolder)\$(ProjectModuleName)\%(RecursiveDir)%(Filename)%(Extension)')" Condition="'%(ModuleFiles.Identity)' != @(FileContents)" ContinueOnError="false" />
<!--CallTarget Targets="RemoveCustomModuleConfigFiles" /-->
</Target>
Run Code Online (Sandbox Code Playgroud)
如果复制任务上没有“ condition”属性,则一切正常,但是我不知道如何使用通配符以及是否有可能实现条件
任何帮助都将不胜感激:)这让我吓了几个小时...
我们的软件分为多个组件。
Msbuild脚本自动执行我们的构建和批处理脚本以调用它。即使有很小的变化,我们也会每天构建组件。我们希望转向持续集成,以便每当签入发生时便触发构建。
我们的msbuild脚本以这样的方式编写:它将为组件生成所有sln文件。在持续集成中,是否仅需要构建经过修改的sln?
如果我仅生成更改的项目,是否必须为每个sln编写一个msbuild?
我可以简单地在teamcity中使用现有的msbuild脚本吗?
如何使用msidb.exe添加或删除msi数据库表的条目,而不是使用orca.Is有任何命令行,如下所示
msidb.exe [msipath][importingFilepath]
Run Code Online (Sandbox Code Playgroud)
添加文件后,应更新msi表中的相应条目
谢谢,
我有一个包含多个vdproj文件的解决方案.我在build.proj文件中创建了一个项目组:
<ItemGroup>
<SetupProjectFiles Include="$(MSBuildProjectDirectory\**\*.vdproj">
</SetupProjectFiles>
Run Code Online (Sandbox Code Playgroud)
现在我想在每个上面调用devenv.exe吗?
<Exec Command="devenv.exe %(SetupProjectFiles)"></Exec>
Run Code Online (Sandbox Code Playgroud)
不行......任何人都有指点吗?
如何让MSBuild任务使用外部xml参数文件中的参数?
示例:使用外部xml文件中的"MyConnectionStringParameter"作为MSBuild任务.
MSBuild文件:
<?xml version="1.0"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Migrate">
<UsingTask TaskName="FluentMigrator.MSBuild.Migrate"
AssemblyFile="../bin/FluentMigrator.MSBuild.dll"/>
<PropertyGroup>
<TargetPath>../bin/Target.dll</TargetPath>
</PropertyGroup>
<Target Name="Migrate" >
<Message Text="Starting FluentMigrator Migration"/>
<Migrate Database="sqlserver2008"
Connection="$(MyConnectionStringParameter)"
Target="$(TargetPath)"
Verbose="True"
Output="True"
OutputFilename="generated.sql">
</Migrate>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
参数文件:
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="MyConnectionStringParameter" value="ParameterValue" />
</parameters>
Run Code Online (Sandbox Code Playgroud)