我经常在我的ASP.NET项目中添加很多内容文件(主要是图像和js).我正在使用VS发布系统,在发布之前,新文件在我将它们包含在项目中之前不会发布.我想自动包含指定目录中的所有文件.有没有办法指定哪些目录应该自动包含在csproj文件中或其他地方?
当.NET Core仍然使用该project.json格式时,您可以构建一个针对多个框架的类库(例如net451,netcoreapp1.0).
既然官方项目格式正在csproj使用MSBuild,那么如何指定要定位的多个框架?我试图寻找这个在VS2017的项目设置,但我能只针对从.NET框架的核心在单一框架(它甚至没有列出我的其他完整的.NET框架版本都已经安装) :
我正在尝试使用.NET Core编写一个插件系统,我的一个要求是能够将插件DLL及其依赖项分发给用户进行安装.但是,我无法弄清楚如何将我的NuGet依赖项包含为构建工件并将它们输出到构建文件夹,而不必将其dotnet publish用作hack.有什么方法可以在csproj中指定它吗?
我有一个TeamCity服务器设置来完成我的CI构建.我正在构建和测试C#解决方案并运行一些自定义的MSBuild任务.其中一项任务是在构建输出中打印警告...
MSBuild命令行参数包含"/ property:"或"/ p:"参数.请改用Build Parameteres.
我不明白这意味着什么或如何删除它.谷歌不好(有或没有拼写错误).我从命令行运行任务(with /verbosity:diagnostic)并且它没有出现,所以我相信它是一个TeamCity消息.
MSBuild任务是
<Target Name="InstallDb">
<MakeDir Directories="$(DbPath)" />
<Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseDrop.sql" />
<Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseCreate.sql -v DbPath="$(DbPath)"" />
<Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseProgrammability.sql" />
</Target>
Run Code Online (Sandbox Code Playgroud)
相关的TeamCity步骤信息是
MSBuild版本:4.0
MSBuild ToolsVersion:4.0
运行平台:x64
目标:InstallDb
命令行参数:/property:DbPath=%env.DB_PATH%
是否可以使用post build事件设置.net项目来执行powershell脚本?我正在使用此脚本生成一些文件.我也可以通过它是脚本的调试版本还是发布版本.这方面的一个例子很棒.
我试图通过exec任务得到简单的输出msbuild:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Test">
<Exec Command="echo test output">
<Output TaskParameter="Outputs" ItemName="Test1" />
</Exec>
<Exec Command="echo test output">
<Output TaskParameter="Outputs" PropertyName="Test2" />
</Exec>
<Message Text="----------------------------------------"/>
<Message Text="@(Test1)"/>
<Message Text="----------------------------------------"/>
<Message Text="$(Test2)"/>
<Message Text="----------------------------------------"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
但得到下一个输出:
echo test output
test output
echo test output
test output
----------------------------------------
----------------------------------------
----------------------------------------
Run Code Online (Sandbox Code Playgroud)
如何通过我的脚本输出?
我想将一个.NET DLL程序集和一个由VB.NET控制台应用程序项目引用的C#类库项目合并到一个命令行控制台可执行文件中.
我可以从命令行使用ILMerge执行此操作,但我希望将引用程序集和项目的这种合并集成到Visual Studio项目中.从我的阅读中,我了解到我可以通过MSBuild Task或Target执行此操作,只需将其添加到C#/ VB.NET项目文件中,但我找不到具体的示例,因为MSBuild是一个很大的主题.此外,我找到一些将ILMerge命令添加到Post-build事件的引用.
如何将ILMerge集成到Visual Studio(C#/ VB.NET)项目中,这些项目只是MSBuild项目,将所有引用的程序集(copy-local = true)合并到一个程序集中?
这如何与可能的ILMerge.Targets文件绑定?
使用Post-build事件会更好吗?
在"旧学校"MSBuild项目中 - 例如仍然在VS2017中的Windows窗体中使用 - 文件可以通过DependentUponcsproj文件中的项目"嵌套" .
我用它来在Noda Time中将单元测试组合在一起,例如
<Compile Include="LocalDateTest.PeriodArithmetic.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)
这导致了易于导航的测试:
转向project.json.NET Core时,我故意"丢失"此功能,但希望在转换为MSBuild时会返回.但是,看起来基于.NET Core SDK(根元素<Project Sdk="Microsoft.NET.Sdk">)的MSBuild项目在Visual Studio 2017中得不到相同的处理,即使ItemGroup手动添加与"旧学校"项目相同的元素.
ASP.NET Core项目为缩小的CSS和Javascript接收自动嵌套,但目前尚不清楚如何将其应用于.NET Core库项目中的C#.
我有一个C#项目说MyProject.csproj位于"C:\ Projects\MyProject \".我也有我想复制到这个项目的输出目录中的文件.但是,文件位于"C:\ MyContentFiles"位置,即它们不在项目锥内.该目录也有子目录.目录的内容不受管理.因此,我必须包括其下的所有内容.
当我在项目中将它们包含为"内容"时,它们会被复制,但目录结构会丢失.我做了这样的事情: -
<Content Include="..\..\MyContentFiles\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
Run Code Online (Sandbox Code Playgroud)
如何将这些文件/目录递归复制到项目的输出目录中并保留目录结构?
我有一个数据库项目作为我在Visual Studio 2013中的解决方案的一部分.在过去的3周内完美地工作,现在突然间它将无法构建,因此我无法发布任何更改.我收到了MSBuild错误:
"C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v12.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(513,5):错误:MSB4018:"SqlBuildTask"任务意外失败.System.MethodAccessException:尝试通过方法'Microsoft.Data.Tools.Schema.Sql.Build.SqlTaskHost.OnCreateCustomSchemaData(System.String,System.Collections.Generic.Dictionary`2)'来访问方法'Microsoft.Data.Tools. Components.Diagnostics.SqlTracer.ShouldTrace(System.Diagnostics.TraceEventType)'失败了."
有人有任何想法吗?我今天早上做的就是从源代码控制中删除最新的更改.我无法看到这会如何搞乱实际MSBuild过程,而最后签到的人根本没有任何问题.