相关疑难解决方法(0)

如何使用msbuild发布Web?

Visual Studio 2010具有"发布"命令,允许您将Web应用程序项目发布到文件系统位置.我想在我的TeamCity构建服务器上执行此操作,因此我需要使用解决方案运行程序或msbuild.我尝试使用Publish目标,但我认为这可能适用于ClickOnce:

msbuild Project.csproj /t:Publish /p:Configuration=Deploy
Run Code Online (Sandbox Code Playgroud)

我基本上想要完成Web部署项目的功能,但没有加载项.我需要它来编译WAP,删除执行不必要的任何文件,执行任何web.config转换,并将输出复制到指定的位置.

我的解决方案基于Jeff Siver的回答

<Target Name="Deploy">
    <MSBuild Projects="$(SolutionFile)" 
             Properties="Configuration=$(Configuration);DeployOnBuild=true;DeployTarget=Package" 
             ContinueOnError="false" />
    <Exec Command="&quot;$(ProjectPath)\obj\$(Configuration)\Package\$(ProjectName).deploy.cmd&quot; /y /m:$(DeployServer) -enableRule:DoNotDeleteRule" 
          ContinueOnError="false" />
</Target>
Run Code Online (Sandbox Code Playgroud)

asp.net msbuild teamcity visual-studio-2010 msdeploy

208
推荐指数
7
解决办法
20万
查看次数

"在Visual Web Developer Publish上找不到有效的AspnetMergePath"?

我想使用Visual Web Developer Express 2010发布一个网站,使用以下设置通过FTP预编译到远程服务器:

  • 仅部署运行此应用程序所需的文件
  • 在发布之前预编译此应用程序
  • 允许网站可更新
  • 没有部署数据库
  • 站点正在部署为文件层次结构,而不是.zip包

我的第一次构建/部署似乎进展顺利,但在我的第二次编译后,我收到以下错误:

Transformed web.config using C:\path_to_site\Web.Debug.config into obj\Debug\TransformWebConfig\transformed\web.config.
Copying all files to temporary location below for package/publish:
obj\Debug\AspnetCompileMerge\Source.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.5\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132,5): Error : Can't find the valid AspnetMergePath
Run Code Online (Sandbox Code Playgroud)

这是Microsoft.Web.Publishing.AspNetConfigurationMerge.targets文件的一部分内容:

  <Target
      Name="GetAspNetMergePath"
      DependsOnTargets="$(GetAspNetMergePathDependsOn)"
      Condition ="'$(GetAspNetMergePath)' != 'false'">
    <PropertyGroup>
      <AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
      <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath>
    </PropertyGroup>
    <Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))"
           Text="Can't find the valid AspnetMergePath" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

编辑:更改发布设置以在发布之前删除所有现有文件毕竟不能解决问题.因为这个原因,我现在假设问题是本地的.

我的web.config中似乎没有AspMergePath标记.我不知道我是否应该手动添加标签.但是,我的项目中存在路径"obj {publish setting}\AspnetCompileMerge\Source".

如果重要,我的项目名称是"TestProject.NET"

感谢您的反馈.

asp.net deployment visual-web-developer publishing visual-studio

24
推荐指数
3
解决办法
2万
查看次数

任务失败,因为找不到AL.exe,

编译项目时出现以下错误:

任务失败,因为找不到"AL.exe",或者未安装正确的Microsoft Windows SDK.任务是在注册表项的InstallationFolder值中指定的位置下的"bin"子目录中查找"AL.exe" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A.您可以通过执行以下操作之一来解决问题:

  1. 安装适用于Windows Server 2008和.NET Framework 3.5的Microsoft Windows SDK.
  2. 安装Visual Studio 2008.
  3. 手动将上面的注册表项设置为正确的位置.
  4. 将正确的位置传递给任务的"ToolPath"参数.

当我在我的UnitTest项目中将资源文件添加到我的文件夹时,会出现此错误.我的程序不直接使用这些资源文件进行本地化,它们就像普通文件一样.我需要它们来对我的程序中的一些逻辑进行单元测试,这些逻辑使用ResXResourceReader.

有人能解释一下为什么会出现这个错误吗?

编辑:安装Windows SDK解决了该问题,如错误中所述.但我仍然想知道错误出现的原因.我对我没有意义.

c# visual-studio-2008

13
推荐指数
2
解决办法
3万
查看次数

VS.NET 2010/MSBUILD可以为.NET 3.5 SP1生成XmlSerializers吗?

我刚刚将包含WinForms,通用库和Web应用程序的VS 2008解决方案升级到VS 2010,但所有项目仍然针对.NET 3.5 SP 1.我使用此技术为我的常用库生成XmlSerializers.WinForms应用程序运行正常.当我的Web应用程序尝试使用引用相同XmlSerializers的这些库运行时,它会抛出以下内容:

'/ WebSubscribers'应用程序中的服务器错误.无法加载文件或程序集"Ceoimage.Basecamp.XmlSerializers"或其依赖项之一.此程序集由比当前加载的运行时更新的运行时构建,无法加载.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.BadImageFormatException:无法加载文件或程序集"Ceoimage.Basecamp.XmlSerializers"或其依赖项之一.此程序集由比当前加载的运行时更新的运行时构建,无法加载.

我已经使用.NET Reflector查看了XmlSerializer的引用,并看到它引用了2.0和4.0版本mscorlib以及3.5和4.0版本System.Data.Linq.奇怪的是,它只使用4.0版本System.Xml.那可能是我的问题.

如何使用这些XmlSerializers运行Web应用程序?当我简单地删除那些XmlSerializers时,Web应用程序运行正常.这是一个选项,但是如何强制MSBUILD为特定版本的CLR创建序列化程序?

这是我添加到项目文件的MSBuild任务,它强制创建XmlSerializers:

<Target Name="AfterBuild" DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" Outputs="$(OutputPath)$(_SGenDllName)">
 <Delete Files="$(TargetDir)$(TargetName).XmlSerializers.dll" ContinueOnError="true" />
 <SGen BuildAssemblyName="$(TargetFileName)" BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)" ShouldGenerateSerializer="true" UseProxyTypes="false" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)">
  <Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" />
 </SGen>
</Target>
Run Code Online (Sandbox Code Playgroud)

msbuild sgen visual-studio-2010 .net-reflector xmlserializer

12
推荐指数
2
解决办法
2864
查看次数

在.NET 4的生成过程中找不到LC.exe文件

迁移到.net 4.0时出现问题,在尝试构建时出现以下错误.

 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1917,9): 
  error MSB3086: Task could not find "LC.exe" using the SdkToolsPath "" or the 
  registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A".

 Make sure the SdkToolsPath is set and the tool exists in the correct processor 
 specific location under the SdkToolsPath and that the Microsoft Windows SDK is
 installed 

 External Program Failed: C:\windows\microsoft.net\framework\v4.0.30319\MSBuild.exe
 (return code was 1)
Run Code Online (Sandbox Code Playgroud)

最新版本的microsoft windows sdk安装在机器上,但版本是v7.1.为了解决这个问题,我将以下几点放在注册表项中

   HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\InstallationFolder 
 to C:\Program Files\Microsoft SDKs\Windows\v7.1\. 
Run Code Online (Sandbox Code Playgroud)

这工作有点但我觉得有点脏将7.0A注册表项指向7.1安装.有没有人有更好的解决方案来解决这个问题?

c#

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

MSBuild"sgen.exe"丢失了

使用MSBuild时出现以下错误.我得到的错误是:

C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2769,5):错误MSB3086:任务找不到使用SdkToolsPath""或注册表项"HKEY_LOCAL_MACHINE"的"sgen.exe" SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86".确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下正确的处理器特定位置,并且已安装Microsoft Windows SDK

到目前为止,我已经做了以下事情:

1)从这里安装Windows SDK v8

2)我确认注册表项"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0\WinSDK-NetFx40Tools-x86"存在于注册表中

3)上面2中的注册表项指向路径"C:\ Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools",我已确认路径存在且sgen.exe位于那个目录

4)我也做了一些自己的研究并遇到了这个SO帖子,但答案是在服务器上安装visual studio,这对我来说不是一个选择.但是,我想指出我有另一个构建服务器具有完全相同的设置,并且它工作正常,所以我的临时工作是在该服务器上构建它,然后复制构建.

任何人都对问题可能有什么了解?

.net windows msbuild visual-studio-2012

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

无法使用msbuild构建工作流项目(Sharepoint 2010)

我使用teamcity使用64位MSBuild构建Sharepoint项目.所有项目都可以正常工作而不是我的工作流项 使用Framework 4.0时,我收到错误消息

c:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Workflow.Targets(121,5):错误MSB4018:"CompileWorkflowTask"任务意外失败.[V:\ Workflows\MyCustomer.WFs.TranslationWorkflow\MyCustomer.WFs.TranslationWorkflow\MyCustomer.WFs.TranslationWorkflow.csproj] c:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Workflow.Targets(121,5):错误MSB4018:System.IO.DirectoryNotFoundException:找不到路径'C:\ Windows\system32\config\systemprofile\AppData\Local\Temp\vjwduioy.tmp'的一部分.[V:\工作流\ MyCustomer.WFs.TranslationWorkflow\MyCustomer.WFs.TranslationWorkflow\MyCustomer.WFs.TranslationWorkflow.csproj]

我记得微软已经摆脱了旧的Workflow机制,所以我预计它可能只适用于旧的3.5框架并用它构建项目但是又出现了另一个错误:

C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets(37,45):错误MSB4019:导入的项目"C:\ Windows\Microsoft.NET \找不到Framework64\v3.5\Workflow.Targets".确认声明中的路径是否正确,以及该文件是否存在于磁盘上.

在Visual Studio 2010中,建筑工作正常.

msbuild teamcity sharepoint sharepoint-2010 sharepoint-workflow

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

VS 2010,TFS 2013 SGEN:尝试加载格式不正确的程序集

我正在进行tfs 2013构建定义的转换,我们最初使用的是tfs 2008.我有一个安装了TFS2013的新服务器,并且正在完成2013 xaml(工作流)定制的构建定义.但是,当我的TFS在任何Cpu配置的发布模式下构建时,我正面临一个错误,但是当我使用调试模式时它很好.我试过看了很多文章而无法找到任何解决方案,请在这里帮助我.这在我的本地机器上很好,但只在服务器中发生.

项目和细节

1)项目是.net framework 4.0

2)默认配置是"Any Cpu"

3)TFS 2013服务器是64位,Windows Server 2008 r2

构建定义

配置:任何CPU |发布

MsBuildPlatform:x86

错误:SGEN:尝试加载格式不正确的程序集:C:\ Windows\Microsoft.Net\assembly\GAC_64\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll.

警告:C:\ Program Files(x86)\ MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(990):找不到框架".NETFramework,Version = v4.0"的引用程序集.要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本.请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.

我安装了windos 8 SDK(仅限工具)和Windows框架4 x64,因为x86版本失败了

文件夹C:\ Program Files\Microsoft SDKs\Windows有v7.0文件夹C:\ Program Files(x86)\ Microsoft SDKs\Windows有v8.1A文件夹

我的本地机器在上面的路径中的Windows文件夹中有许多版本

我已检查但无法找到解决方案的相关文章列表

http://seravy.wordpress.com/2012/10/25/installing-net-4-5-and-not-windows-sdk-8/

http://blogs.msdn.com/b/windowssdk/archive/2009/09/16/windows-7-sdk-setup-common-installation-issues-and-fixes.aspx

运行MSBuild无法读取SDKToolsPath

http://dukelupus.wordpress.com/2008/02/05/task-failed-because-sgenexe-was-not-found-solution/

如何修复Visual Studio编译错误,"处理器架构之间不匹配"?

TFS 2010为.Net 3.5应用程序创建.Net 4.0 XmlSerializers DLL

那我该怎么做才能解决这个错误呢?

msbuild tfs build-process build tfs2013

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

MSBuild使用不正确版本的sgen.exe生成XmlSerializer dll?

我正在使用TeamCity运行MSBuild脚本,该脚本将清理并重建我们的解决方案之一。当我部署由该过程生成的dll时,Web服务器返回有关[MyType] .XmlSerializer.dll的错误,该错误是“此程序集由比当前加载的运行时新的运行时构建,无法加载。” 到目前为止,这是我的笔记:

  • 该解决方案是针对.Net Framework 3.5的Visual Studio 2010解决方案。
  • TeamCity将模仿这一点。它使用MSBuild版本-“ .Net Framework 4.0”和MSBuild ToolsVersion-“ 3.5”进行设置。这告诉TeamCity使用MSBuild 4.0,但要以3.5 Framework为目标。由于我们使用的是Visual Studio 2010,因此必须使用MSBuild 4.0或它会产生其他错误(与VS2010使用的新警告代码有关)。 这似乎工作正常,并且为大多数dll生成.Net 3.5 dll。
  • MSBuild进程调出resgen.exe和sgen.exe分别生成资源文件和XmlSerializer文件。由于我们使用的是MSBuild 4.0,因此它将查找Windows SDK 7.1。我已经安装了该版本。我还安装了Windows SDK 7.0。
  • 无论我针对的框架是什么,构建过程都会在WinSDK 7.1下调用sgen.exe,并生成.Net Framework 4.0 [MyType] .XmlSerializer.dlls。它是否正确?

据我所知,我的选择是:

  • 如果我改变目标是针对较旧的v3.5 MSBuild工具,则VS2010已在解决方案文件中添加了警告,警告该文件使MSBuild 3.5停止运行并破坏了构建。这不是真正的选择。
  • 尝试将注册表中的路径更改为本主题中讨论的工具,但看不到任何更改。
  • 在服务器上安装VS2010。显然,VS2010使用了中间的WinSDK v7.0A,而获得此功能的唯一方法是在服务器上安装VS2010。这不是真正的选择。
  • 更改项目以不生成XmlSerializer.dlls。这行得通,但看起来有点俗气,因为它并不能真正解决问题,我也担心性能问题。

我想念什么吗?我还有其他选择吗?

.net msbuild teamcity visual-studio

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

任务使用SdkToolsPath找不到“ LC.exe”

我已经使用TFS将项目克隆到我的计算机上,在构建项目时出现此错误:

错误6任务使用SdkToolsPath“”或注册表项“ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v8.1A \ WinSDK-NetFx40Tools-x86”找不到“ LC.exe”。确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下正确的处理器特定位置,并且已安装Microsoft Windows SDK

我已经在网上搜索了,但是找不到解决方案。我使用VS 2013和.NET4。如何解决此问题?谢谢。

c# tfs visual-studio-2013

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

msbuild失败:MSB3086,MSB3091:找不到"AL.exe","resgen.exe"

在64位Windows 7计算机上,我从http://msdn.microsoft.com/en-us/windows/desktop/aa904949.aspx安装了.Net framework 4.5.1和Windows SDK for Windows 8.1

在尝试构建解决方案时,我收到以下错误(这似乎是相关的):

错误MSB3086:任务无法使用SdkToolsPath""或注册表项"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86"找到"AL.exe".确保已设置SdkToolsPath,并且该工具位于SdkToolsPath下正确的处理器特定位置,并且已安装Microsoft Windows SDK

错误MSB3091:任务失败,因为找不到"resgen.exe",或者未安装正确的Microsoft Windows SDK.任务是在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx35Tools-x86的InstallationFolder值中指定的位置下的"bin"子目录中查找"resgen.exe".您可以通过执行以下操作之一来解决问题:1)安装Microsoft Windows SDK.2)安装Visual Studio 2010. 3)手动将上述注册表项设置为正确的位置.4)将正确的位置传递给任务的"ToolPath"参数.

我尝试了建议的解决方案(除了安装VS:不允许在该机器上),许多其他人在互联网上找到,例如重新安装SDK,在注册表中执行一些黑客攻击,设置环境变量,在项目中添加标签,尝试多个命令line切换到msbuild进程,并遵循以下线程:

运行MSBuild无法读取SDKToolsPath

失败的构建,因为它找不到AL.exe

tfs 2012构建任务失败,因为找不到"resgen"

但他们都没有解决问题.

这个问题类似于:

/sf/ask/1655877121/

没有答案!

任何建议将不胜感激!

.net msbuild sdk windows-7-x64

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