TL; DR是否有任何官方文档详细描述<private>/"复制本地"选项如何与MSBuild一起使用?应该考虑什么价值?
当你添加一个项目引用从一个项目在Visual Studio中的另一个,它会加入<ProjectReference Include=".....csproj">到.csproj的MSBuild文件.
当您将 Visual Studio中的一个项目的文件引用添加到文件系统中的程序集文件时,它将添加<Reference Include="Foo"> <HintPath>....Foo.dll</HintPath> ...到.csprojMSBuild文件.
在这两种情况下,Visual Studio的设置Copy Local = True|False,一个子元素<Private>True</Private>或<Private>False</Private>将增加.
Reference并且ProjectReference似乎在Common MSBuild Project Items下记录:
Run Code Online (Sandbox Code Playgroud)<ProjectReference> Represents a reference to another project. Item Name Description ------------------------- Name ... Project ... Package ... <Reference> Represents an assembly (managed) reference in …
.net msbuild copy-local visual-studio msbuild-projectreference
当我尝试运行命令"update-database"时,我得到以下异常:
指定'-Verbose'标志以查看应用于目标数据库的SQL语句.System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.Build.Framework,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该系统找不到指定的文件.文件名:'Microsoft.Build.Framework,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'
警告:装配绑定日志记录已关闭.要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1.注意:程序集绑定失败日志记录会导致一些性能损失.要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog].
无法加载文件或程序集"Microsoft.Build.Framework,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"或其依赖项之一.系统找不到指定的文件
我将一个大型代码库放入Team Foundation Server.我希望构建过程能够创建项目的"准备部署"构建.
我们这样做的正常方法是让每个项目的输出都在自己的文件夹中.所以,例如,我们结束了类似的事情
C:\project1\
assembly1.dll
assembly2.dll
project1.exe
project1.exe.config
C:\project2\
assembly2.dll
assembly3.dll
project2.exe
project2.exe.config
C:\project3\
assembly1.dll
assembly3.dll
project3.exe
project3.exe.config
Run Code Online (Sandbox Code Playgroud)
这是我们喜欢的方式.
但是,TFS似乎希望将所有内容都放在同一目录中.
C:\output\
assembly1.dll
assembly2.dll
assembly3.dll
project1.exe
project1.exe.config
project2.exe
project2.exe.config
project3.exe
project3.exe.config
Run Code Online (Sandbox Code Playgroud)
虽然它节省了一些磁盘空间(程序集只有一次),但并不是我们想要的.
指定TFS/MSBuild应该放置输出文件的位置的最佳方法是什么?我是否需要单独编辑sln/csproj文件才能实现此目的,还是可以在TFSBuild.proj文件中执行此操作?(即,在MSBuild特定的文件中)
C#项目中的文件有" 复制到输出目录"属性.但是在VC++项目中却没有.我知道,我可以在VC++中使用Build事件并在那里写一些类似的东西
xcopy /y /d %(FullPath) $(OutDir)
Run Code Online (Sandbox Code Playgroud)
有没有办法避免使用CMD(和其他脚本方法)?在这种情况下,msbuild可以帮忙吗?
我有一些使用扩展方法的代码,但是使用VS2008中的编译器在.NET 2.0下编译.为了促进这一点,我不得不声明ExtensionAttribute:
/// <summary>
/// ExtensionAttribute is required to define extension methods under .NET 2.0
/// </summary>
public sealed class ExtensionAttribute : Attribute
{
}
Run Code Online (Sandbox Code Playgroud)
但是,我现在想要包含该类的库也可以在.NET 3.0,3.5和4.0下编译 - 没有'ExtensionAttribute在多个地方定义'警告.
当目标框架版本是.NET 2时,是否有任何编译时指令可用于仅包含ExtensionAttribute?
当Visual Studio运行构建时,它运行MSBuild来完成大部分工作.如果将.sln文件传递给MSBuild,并使用适当的Configuration和Platform属性,它将构建与Visual Studio类似的解决方案.
msbuild mysolution.sln /p:Configuration=Release /p:Platform="Any CPU"
Run Code Online (Sandbox Code Playgroud)
然而,有区别:有时构建将通过MSBuild的错误,而不是通过Visual Studio,反之亦然.
Visual Studio传入MSBuild以影响进程的参数是什么?有没有办法在执行构建时看到它传递的参数?
到目前为止,我可以使用命令行构建.NET 4.5.2
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild MySolution.sln
Run Code Online (Sandbox Code Playgroud)
我需要在计算机上安装的唯一内容是.NET Framework和Visual Studio 2010 shell.
现在我考虑升级到.NET 4.6.但是我找不到如何在没有Visual Studio的情况下构建解决方案的方法.
我不想安装Visual Studio 2015,因为它对于这个托管的虚拟机来说太大了.我希望一些MSBuild或Microsoft软件包安装就足够了.
我试图通过向控制台发送消息来"printf()调试"我的Visual Studio项目文件,如下所示:
<Target Name="BeforeBuild">
<Message Text="+++++++++++++++++++++++ Justin Dearing ++++++++++++++++++++++++++++++++++++" />
</Target>
Run Code Online (Sandbox Code Playgroud)
这可以从命令行工作:
BeforeBuild:
+++++++++++++++++++++++ Justin Dearing ++++++++++++++++++++++++++++++++++++
Run Code Online (Sandbox Code Playgroud)
但是,消息不会显示在Visual Studio 2010构建输出中.是否有我可以使用的替代msbuild任务,或者Visual Studio中的设置我可以启用这些消息吗?
在FxCop 10之后,Microsoft停止为FxCop发布单独的安装程序.在安装Visual Studio 2013/2015/2017之后,官方目前只能运行代码分析(FxCop 12.0/14.0/15.0).但是,我们坚持不在构建代理上安装Visual Studio(安装需要保留在 - 与我们在开发者计算机上获得的内容同步等).
那么我将如何让FxCop 12.0/14.0/15.0在构建代理上工作,最好不要安装其他任何东西?不过,我会接受为源代码控制添加一些二进制文件和msbuild文件.否则:有没有办法只使用Visual Studio 2013/2015/2017安装程序安装FxCop的东西?
注意:我们使用Teamcity作为构建服务器.
由于特定环境和FxCop版本有多个有效答案,我可以自由地将它们链接到此处以便于访问:
我们可以在没有Visual Studio 2012的情况下使用MSBuild吗?
目前,我们有一个构建服务器,我们正在编译和创建其中一个项目的部署副本,它已安装Visual Studio Professional Edition.我们现在正在建立一个新的构建服务器.我们真的需要在新的构建服务器上使用Visual Studio 2012吗?
如果是,那怎么样?我用谷歌搜索,但我找不到答案.
msbuild ×10
.net ×3
c# ×2
.net-4.6 ×1
build ×1
build-server ×1
c++ ×1
copy-local ×1
fxcop ×1
migration ×1
nant ×1
tfs ×1
visual-c++ ×1