我想打包我的VS2010 Web应用程序项目,以便使用msdeploy进行部署.在开发机器上我可以使用:
MSBuild.exe "C:\path\to\WebApp.csproj" /target:package
Run Code Online (Sandbox Code Playgroud)
但在我的构建服务器上,我收到此错误:
错误MSB4057:项目中不存在目标"包".
我在构建服务器上缺少什么?
我是MS Build的新手,并且一直在审查Visual Studio附带的许多内置目标文件.我看到变量通过了几种不同的方式,我不太确定它们之间的区别:
$(...)
@(...)
%(...)
Run Code Online (Sandbox Code Playgroud) 我有一个VS 2012 web项目/ sln,我正在尝试在TeamCity中构建.它使用安装在TeamCity上的.NET 4.5.
TeamCity服务器仅安装了VS 2010.
构建运行时出现此错误:
C:\BuildAgent\work\d5bc4e1b8005d077\CUSAAdmin.Web\CUSAAdmin.Web.csproj(799, 3):
error MSB4019:
The imported project
"C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found.
Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. Project CUSAAdmin.Web\CUSAAdmin.Web.csproj failed.
Project CUSAAdmin.sln failed.
Run Code Online (Sandbox Code Playgroud)
它正在尝试使用Visual Studio 2012(v11.0)进行构建.
虽然我在build.xml中将VisualStudioVersion设置为10?
<Target Name="BuildPackage">
<MSBuild Projects="CUSAAdmin.sln" ContinueOnError="false"
Targets="Rebuild"
Properties="Configuration=$(Configuration); VisualStudioVersion=10.0" />
Run Code Online (Sandbox Code Playgroud)
在项目内部,它也默认为VS2010
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath
Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
Run Code Online (Sandbox Code Playgroud) msbuild teamcity visual-studio-2010 visual-studio visual-studio-2012
我正在尝试编写一个MSBuild任务,它从我的生成构建脚本上的bin文件夹中删除Obj目录和PDB,似乎无法使其正常工作.
有没有人有他们这样做或类似的例子,或者链接到一个简单的删除文件和MSBuild目录的例子?
所以,我安装了VS 2010,我正在修改我的TeamBuity构建集成的MSBuild脚本.一切都很好,只有一个例外.
如何告诉MSBuild我要应用我在发布构建时创建的Web.conifg转换文件...
我有以下产生编译的网站但它,它将Web.config,Web.Debug.config和Web.Release.config文件(全部3)输出到编译的输出目录.在工作室中,当我执行发布到文件系统时,它将执行转换并仅输出具有适当更改的Web.config ...
<Target Name="CompileWeb">
<MSBuild Projects="myproj.csproj" Properties="Configuration=Release;" />
</Target>
<Target Name="PublishWeb" DependsOnTargets="CompileWeb">
<MSBuild Projects="myproj.csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="WebProjectOutputDir=$(OutputFolder)$(WebOutputFolder);
OutDir=$(TempOutputFolder)$(WebOutputFolder)\;Configuration=Release;" />
</Target>
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒..!
我知道这可以通过其他方式完成,但我想尽可能使用新的VS 2010方式
任务是形成Visual Studio 2010项目,以便在任何构建或发布期间将某些foo.exe实用程序复制到output(bin)目录中.
早期我在.csproj(MSBuild文件)中创建了PostBuildEvent任务:
<PropertyGroup>
<PostBuildEvent>
Copy "$(SolutionDir)Tools\foo.exe" "$(ProjectDir)$(OutDir)foo.exe"
</PostBuildEvent>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
但这不是普遍的.发布期间(Visual Studio 2010)foo.exe出现在bin目录中,但未复制到输出发布目录.也许我做的一切都完全错了,并且有一些标准机制可以将项目中的文件包含在以后,在构建或发布期间,复制到bin?
我有MVC 4.0 WebApi项目,基于此自动生成帮助.
我的模型类在我的解决方案中存储了另一个项目.为每个项目启用xml文件的生成(项目属性 - >构建 - > OutPut - > XML文档文件 - 已启用).
在本地调试中,一切正常 - 将xml文件复制到项目目录,我看到来自其他项目的字段/类的注释.
但是当我使用发布配置文件(到文件夹)时,xml文件不会复制到输出文件夹.仅复制主WebApi项目中的一个xml文件.所以我没有看到其他项目的类的评论.
我想知道什么时候设置copy-local=true引用有任何启发式方法?
如果引用类型只在内部使用我可以设置copy-local到true,但如果被引用类型暴露作为参数和返回值我设置copy-local到false和指示时,应使用我的媒体库的依赖特定版本应参照?
谁能为我澄清一下这个?
将某些NuGet包添加到项目时,有时会在.csproj文件的第一个属性组中显示一个奇怪的项.
<PropertyGroup>
...
<NuGetPackageImportStamp>3d051ef3</NuGetPackageImportStamp>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
邮票每次都不同,并且看起来不是连续的.
我<NuGetPackageImportStamp>在NuGet文档中找不到任何引用.它是什么,它是如何工作的?有必要吗?
一个似乎每次添加这个的包是StyleCop.MSBuild,至少使用当前的4.7.49版本.只需将该包添加到新项目中,您就会看到这个神秘项目出现在您的项目文件中.
随着从VS2017引入project.json的新csproj格式的转变,我正在努力理解dotnetcli和new 之间的区别msbuild以及何时使用另一个.
1)要csproj从命令行构建新的netstandard库,我应该调用dotnetcli(例如dotnet restore dotnet build)还是使用msbuild(例如msbuild ExampleNetstandard.sln).
2)另外,我的理解是有两个版本msbuild,一个基于完整框架,另一个基于目标dotnet core.它是否正确?我应该经常使用dotnet version
3)是dotnet cli独立还是需要msbuild安装?例如,当您安装dotnet SDK时,这也安装了msbuild吗?如果是这样与vs2017安装的版本不同?
msbuild ×10
.net ×2
csproj ×2
asp.net ×1
copy-local ×1
dotnet-cli ×1
msbuild-task ×1
msdeploy ×1
nuget ×1
package ×1
project ×1
reference ×1
teamcity ×1
xml ×1