Tag: msbuild

PrecompileBeforePublish使用Msbuild

我们使用Windows Azure在Cloud Service上托管我们的应用程序,并使用Powershell使用msbuild构建和打包网站。 在发布时,我们的第一个响应时间非常慢,所以我们需要预先编译应用程序。 有很多关于使用aspnet_compiler进行预编译的文档,但是我找不到任何关于使用的官方文档: msbuild Web.sln /p:PrecompileBeforePublish=true 针对MSDN的谷歌搜索没有给我什么,而通常MSDN相当彻底。 我所能看到的是今年早些时候的一篇有用的Stackpost 。 那么有人知道PrecompileBeforePublish的任何正式文档吗? 我看错了吗? 如果不这样做,那么旗帜为我们提供了什么呢,它Precompilation for Deployment with an Updatable UI ( 参考 )相同?

从批处理文件构建.net解决方案

我有一个解决方案文件,包含15个项目,使用一些第三方dll参考。 我希望能够从批处理文件构建解决方案。 做这个的最好方式是什么? 谢谢

System.Diagnostics.Process UseShellExecute究竟做了什么?

我有一个MSBuild任务执行(除其他外)调用xcopy。 我发现,当我从批处理文件运行MSBuild任务时,对xcopy的调用正确执行,并且无法执行或生成任何输出,这些输出可以让我知道当从另一个调用同一个批处理文件时发生了什么使用System.Diagnostics.Process的C#应用​​程序。 两个进程都启动时具有或多或少相同的结构: waitProc.StartInfo.Arguments = “/C [executable]”; waitProc.StartInfo.FileName = “cmd.exe”; waitProc.StartInfo.UseShellExecute = false; 此外,通过在xcopy命令中将“UseShellExecute”从false更改为true,我可以在两个用例中成功,但是命令无法在第三个用例中运行。 第三个用例是我们的自动构建系统,它是一个直接调用msbuild的Windows服务。 在我们的构建机器上发生故障的情况下,copy命令无限期挂起,我相信,因为System.Diagnostics.Process试图显示一个窗口,并且服务没有与它们关联的Windows桌面会话,所以它们不能显示窗口。 我尝试使用“CreateNoWindow”属性,并尝试将“WindowStyle”设置为“ProcessWindowStyle.Hidden”,但这不会改变构建计算机上的行为。 所有这些都说,我真正想知道的是UseShellExecute属性到底是什么,因为它似乎比MSDN文档建议的要多得多。 谢谢。

C#开发工作的项目结构

您认为哪种目录/解决方案/项目结构对于用C#编写的中型到大型项目来说是最易于管理和方便的? “中到大”是指在具有嵌套命名空间的分层结构中包含各种Visual Studio C#项目类型的项目。 1 我主要对Visual Studio 2008中“Windows”部分中的项目类型感兴趣:Windows窗体,WPF,两者的自定义控件和类库。 另外,我正在使用MSBuild(通过Visual Studio)来构建我的项目。 我从未发现Visual Studio自动生成的默认结构值得使用。 此结构有一个文件夹,仅用于包含解决方案和每个项目的嵌套文件夹。 我想知道这是否是因为我过去使用C#的项目规模(从小到中)。 这个结构对大型项目有什么好处? 你觉得它有用吗? 我也对文件夹名称及其与命名空间的关系等内容感兴趣。 以下是我个人的项目结构目标。 目标 每个项目都应该是完全独立的。 也就是说,我希望能够单独检查每个并编译它(在依赖项允许的情况下)。 导航结构应该很容易。 目录结构应以清晰直接的方式映射到名称空间。 识别解决方案文件应该很容易。 项目应该在很少或没有额外努力的情况下在Visual Studio(MSBuild)中在层次结构的大多数或所有级别上构建 请注意,除非明确指出,否则我在此处使用“项目”一词意味着“开发工作”。

App.config替换unit testing

我的持续集成服务器(TeamCity)配置为在构建中运行我们的应用程序中的所有unit testing。 在运行这些测试之前,我需要更改一些appSettings以使它们对我们的CI服务器有效。 通过使用随Visual Studio提供的部署项目,我正在为我的Web项目实现类似的function。 我可以为测试项目做同样的事吗? 谢谢,贡萨洛

在C#代码中使用props / csproj文件中的属性

假设我在csproj文件或props文件中声明了属性SomeValue。 有没有办法可以在我的C#代码中引用该属性?

通过C#评估msbuild任务中定义的项目

我正在尝试生成目标的有向图(点格式),这些目标将以MSBuild项目文件路径作为输入进行调用。 这与ggtools.net中的grand-ui相同 (除了我正在尝试以只读图像开头)。 我希望处理3个案例: 1)目标具有DependsOnTargets属性 2)目标使用Exec任务调用MSBuild 3)目标调用MSBuild任务并传递ItemGroup 我相信我在下面的代码中主要处理#1和#2。 但是,我无法弄清楚如何获取对ItemGroup的引用。 示例MSBuild项目: TargetToInvoke=ParallelTarget1 TargetToInvoke=ParallelTarget2 但是,目标可能跨越多个项目文件。 到目前为止我管理的内容(VS2010 + .NET 4): using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using Microsoft.Build.Evaluation; using Microsoft.Build.Execution; using Microsoft.Build.Framework; namespace ConsoleApplication18 { class Program { static String ProcessMSBuildFile(System.IO.FileInfo file, ProjectTaskInstance referringTask = null) { StringBuilder sb = new StringBuilder(); sb.AppendLine(“subgraph cluster_” […]

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

这是一个有趣的问题,真的让我摸不着头脑。 我有一个正在TeamCity中构建的项目。 它一直工作正常,直到开发人员将资源文件添加到其中一个项目中,并为另一个语言环境添加了一些字符串。 他将.resx文件添加到默认文件旁边的Properties文件夹下。 这是构建日志中的错误消息: C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(2105, 9): error MSB3091: Task failed because “AL.exe” was not found, or the correct Microsoft Windows SDK is not installed. The task is looking for “AL.exe” in the “bin” subdirectory beneath the location specified in the InstallationFolder value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A. You may be able to solve […]

在SQL Server数据库项目构建期间使用错误的编译器

我有一个使用Visual Studio 2015编译SSDT SQL Server数据库项目的问题。我想在我的数据库项目中使用C#6function,但似乎它不受支持。 例如,我在我的db项目中添加了下一个类: namespace Database1 { class ClassFile1 { public string Str { get; } = string.Empty; } } 我试图编译这个,但我得到了错误: CS1519:类,结构或接口成员声明中的标记’=’无效 我发现这个错误的原因是VS 2015使用的编译器版本错误。下一个编译行由VS生成: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /errorendlocation /preferreduilang:en-US /highentropyva+ /reference:”C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\mscorlib.dll” /debug+ /debug:full /optimize- /out:obj\Debug\Database2.dll /subsystemversion:6.00 /target:library /warnaserror- /utf8output ClassFile1.cs 如您所见,使用C:\ Windows \ Microsoft.NET \ Framework […]

如何指定等同于/ features:strict(of csc.exe)到msbuild.exe或.csproj文件?

介绍 考虑这个简单(和坏)的C#类: using System; namespace N { static class C { static void M(DateTime d) { if (d == null) Console.WriteLine(“Yes”); else Console.WriteLine(“No”); } static void L(object o) { if (o is Nullable) Console.WriteLine(“Yes”); else Console.WriteLine(“No”); } } } 方法M和L都有严重的问题。 在M ,我们通过提升的==运算符(自DateTime重载operator ==存在)询问非可空结构DateTime是否等于null。 这总是下降,编译器可以在编译时告诉,因此我们有一个无法访问的分支( “Yes” )。 在N我们询问o是否是static class Nullable一个实例,它永远不会是这种情况(注意,静态类Nullable与struct Nullable )。 同样,这是开发人员的错误,并且”Yes”语句无法访问。 在这些情况下,我们确实需要编译时警告(或“警告错误”),对吗? 看起来,通过在用于C#1.0到5.0的旧C#编译器中逐渐累积编译器错误和/或遗漏,预期的编译时警告无法与旧编译器一起出现。 幸运的是,我们现在有Roslyn […]