我想打包我的VS2010 Web应用程序项目,以便使用msdeploy进行部署.在开发机器上我可以使用:
MSBuild.exe "C:\path\to\WebApp.csproj" /target:package
Run Code Online (Sandbox Code Playgroud)
但在我的构建服务器上,我收到此错误:
错误MSB4057:项目中不存在目标"包".
我在构建服务器上缺少什么?
我想使用Visual Web Developer Express 2010发布一个网站,使用以下设置通过FTP预编译到远程服务器:
我的第一次构建/部署似乎进展顺利,但在我的第二次编译后,我收到以下错误:
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
设置MvcBuildViews为true我的.csproj文件后,为了在构建期间编译视图,我收到以下错误:
'/ temp'不是有效的IIS应用程序
我认为这指的'/ temp'是编译视图的路径.这是.csproj文件中的相关部分:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
我使用完整的IIS在我的本地机器上提供这个MVC 5网站(尚未在远程服务器上尝试过这个).我是否需要在IIS中设置一些内容以使其MvcBuildViews正常工作?
我正在使用以下powershell脚本来构建Web项目:
$tools = @()
$tools += "C:\Windows\System32" #xcopy
$tools += "C:\Windows\Microsoft.NET\Framework\v4.0.30319" #msbuild
$env:Path = [string]::join('; ', $tools)
msbuild ROS.EDI.Web/ROS.EDI.Web.csproj `
/p:DeployOnBuild=true `
/p:PublishProfile=$config `
/p:Configuration=$config `
/p:Platform=AnyCPU `
/p:DefineConstants=$constants `
/property:ApplicationVersion=$env:BUILD_NUMBER `
/property:ApplicationRevision=$env:BUILD_VCS_NUMBER
Run Code Online (Sandbox Code Playgroud)
脚本完成,msbuild在我的开发机器和构建服务器上运行时没有错误.但是,将Web项目发布到本地文件系统的步骤不会在构建服务器上运行.
这是我的开发机器上msbuild的相关输出
PipelinePreDeployCopyAllFilesToOneFolder:
Publish Pipeline Deploy phase Stage ...
WebFileSystemPublish:
...
Run Code Online (Sandbox Code Playgroud)
并在构建服务器上
PipelinePreDeployCopyAllFilesToOneFolder:
Publish Pipeline Deploy phase Stage ...
Package:
Invoking Web Deploy to generate the package with ...
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚为什么"包"步骤在构建服务器上而不是"WebFileSystemPublish"上运行.是什么导致相同版本的msbuild在两台不同的机器上表现不同?
在您将此标记为重复之前,我已阅读以下内容并尝试使用其解决方案无效:
msbuild ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
deployment ×1
iis ×1
msdeploy ×1
package ×1
powershell ×1
publishing ×1