6.发布-Publish 小项目,我们就不需要nginx去放静态文件,修改配置等等。 以往博主部署这种前后端分离项目,是通过nginx部署静态前端文件,反向代理后端接口。这种方式没问题。...但是这里介绍一点新鲜的(至少对博主而言),前端Vue项目通过npm run build构建成一系列的静态文件。这些静态文件就是我们的SPA。说白了,就是一个静态网页。...webapi项目中,文件夹ClientApp,他构建的文件夹为dist,当然这个也是可以修改的。...最重要一步来了,发布时让构建好的静态文件随着WebAPI一起发布,而不需要,单独执行npm run build然后手动拷贝,这里还是用到了MSbuild,所以同样需要修改csproj文件,增加publish...文件夹内容到发布文件夹中 这时再通过Visual Studio后者命令发布时,就会同步构建前端项目,发布后端API且包含前端构建后的dist文件。
也就意味着可以将多个Web项目中通用的Web页面提取出来,封装成RPL,以进行代码重用。...到这里,也就抛出了本文所要解决的问题:如何开发独立通用的RPL? 如果RPL中无法引用项目中定义一些静态资源文件(CSS、JS、Image等),那RPL将无法有效的组织View。 4....Analyze 要想访问RPL中的静态资源文件,首先我们要弄明白.NET Core Web项目中wwwroot文件夹的资源是如何访问的。...在ASP.NET Core 官方文档中Static files in ASP.NET Core,介绍了如何访问自定义目录的静态资源文件。...从图中可以看出内嵌的demo.css文件,是以{程序集名称}.{文件路径}命名的。 那内嵌资源如何访问呢?
本文介绍 Unity3D 项目根目录的 sln 和 csproj 文件,你将知道如何正确理解和使用它们。...那我们在根目录看到的那些 sln 和 csproj 文件是什么? 那只是 Unity 编辑器为了让你方便写 C# 代码临时生成给你用的。...默认 Unity 不指定外部脚本编辑器时,会单纯打开 .cs 文件而已。...而如果指定了 Visual Studio 作为外部脚本编辑器,那么再从 Unity 中打开 C# 项目时,将会生成 sln 和 csproj 文件,然后调用 Visual Studio 打开生成的 sln...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
让我们谈谈如何修改一个有 10 年历史的应用程序中的代码,以便它可以与 ASP.NET Core 共享。...一个好的方法是创建一个部分类并将这些代码块提取到两个 Web 应用程序目标之间不同的新方法中,并使用 csproj 来控制在构建项目时包含哪些文件。...您可以共享模型 现在我们可以共享控制器,我们想要共享它们返回的模型。在许多情况下,当我们通过向 csproj 文件添加另一个 来包含它们时,这才开始起作用。...这是一个示例,展示了如何修改 [Bind] 属性。 #if !...再次使用相同的方法,我们可以编辑 csproj 文件以共享文件,如 _Layout.cshtml。而且,在视图内部,您可以继续使用 C# 预编译器指令来使文件足够灵活以供两个项目使用。
---- 阅读本文,你将: 可以通读 csproj 文件,并说出其中每一行的含义 可以手工修改 csproj 文件,以实现你希望达到的高级功能(更高级的,可以开始写个工具自动完成这样的工作了) 理解新旧...csproj 文件的差异,不至于写工具解析和修改 csproj 文件的时候出现不兼容的错误 csproj 里面是什么?...dll 文件从 MSTest 的 NuGet 包中以链接的形式包含到项目中,并且此文件在 Visual Studio 的解决方案列表中不可见。...新的 Microsoft.NET.Sdk 以不兼容的方式原生支持了 NuGet 包管理。也就是说我们可以在不修改 csproj 的情况之下通过 NuGet 包来扩展 csproj 的功能。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布
我在之前的博客中有教大家如何编写 NuGet 工具包,其中就有编写 .targets 文件。...---- 本文的前置知识 你可能需要了解 csproj 文件的格式和编译过程,才可能读懂本文,所以需要先阅读: 理解 C# 项目 csproj 文件格式的本质和编译流程 问题 下面的代码来自 SourceFusion...额外的,就算修改这个文件,上面的属性也不会生效。 不过,如果使用命令行进行编译,这个却又是生效的。...而新格式的 csproj 是可以直接编辑而不需要卸载项目的,同时如果被外部改变,也不需要重新加载项目,而是可以直接计算出来新的属性和集合。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
简单了解项目根目录的 sln 文件和 csproj 文件将有助于你理解为什么要像本文一样引用 dll 和安装 NuGet 包,因此如果你不了解,建议先阅读: Unity3D 入门:使用 Visual Studio...开发 Unity C# 脚本,说说根目录的那些 sln 和 csproj 文件 - walterlv 如何引用 dll 或者安装 NuGet 包 在 Unity 中,是给 C# 脚本引用 dll 或者安装...选 Mono 那么使用 Mono 虚拟机运行,选 IL2CPP 那么会编译 IL 到静态的 cpp 文件不依靠 Mono VM。...因为 Unity 编辑器生成了 sln 和 csproj,所以在 Visual Studio 里安装也是可以的,不过这里的安装并不会真实生效,而是我们在 Unity 项目的根目录的 Packages 文件夹中能找到我们安装的...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
通常我们能够在 csproj 文件中仅仅使用相对路径就完成大多数的编译任务。但是有些外部命令的执行需要用到绝对路径,或者对此外部工具来说,相对路径具有不同的含义。...这个时候,就需要将相对路径在 csproj 中转换为绝对路径来使用。 本文介绍如何在项目文件 csproj 中将一个相对路径转换为绝对路径。...在 MSBuild 4.0 中,可以在 csproj 中编写调用 PowerShell 脚本的代码,于是获取一个路径的绝对路径就非常简单: 1 [System.IO.Path]::GetFullPath...你可以阅读我的其他篇博客了解到 $(OutputPath) 其实最终都会是相对路径: 项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - walterlv 如何更精准地设置...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
然后我们用 Visual Studio 打开文件,记住,要打开 .csproj 是要用 vs 的菜单 文件->打开。...我们先打开 BlankApplication 里的 BlankApplication.vstemplate 我们要修改是 项目包含文件,把需要包括的文件放进去, TemplateContent 就是我们项目包含的文件...可以看到需要包含项目 Application.csproj,这个值后面 写了ReplaceParameters="true",这就是我们会把东西代换,代换的我在后面讲。...写完我们打开 Application.csproj ,他和一般的 .csproj 一样, ItemGroup 是项目文件,我们需要写入我们的文件是编译还是内容,添加文件很多是编译 Compile 。...修改Template名称 我们可以看到如果我们新建一个模板,看到的名称和原来一样,那么如何自定义自己模板名称?
dotnet build 基础 你需要先了解 csproj 文件的结构,以便进行后续的学习: 理解 C# 项目 csproj 文件格式的本质和编译流程 - 吕毅 项目文件中的已知属性(知道了这些,就不会随便在...MSBuild.Sdk.Extras - 吕毅 接着,csproj 中的重要内容 Target 对理解编译过程非常重要,因为它决定了如何编译这个项目: Roslyn 如何使用 MSBuild Copy...来执行我们的代码: Roslyn 使用 Target 替换占位符方式生成 nuget 打包 - 林德熙 Roslyn 通过 Target 修改编译的文件 - 林德熙 将 .NET Core 项目打一个最简单的...入门:使用 Roslyn 静态分析现有项目中的代码 - 吕毅 Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码 - 吕毅 额外的,你可以阅读更多 Roslyn...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
我们先打开 BlankApplication 里的 BlankApplication.vstemplate 我们要修改是 项目包含文件,把需要包括的文件放进去, TemplateContent 就是我们项目包含的文件...可以看到需要包含项目 Application.csproj,这个值后面 写了ReplaceParameters="true",这就是我们会把东西代换,代换的我在后面讲。...在 Web 窗体模板中使用此参数以确保类名称是唯一的。 如果网站位于 Web 服务器的根目录下,则此模板参数将解析为 Web 服务器的根目录。 year 以 YYYY 格式表示的当前年份。...写完我们打开 Application.csproj ,他和一般的 .csproj 一样, ItemGroup 是项目文件,我们需要写入我们的文件是编译还是内容,添加文件很多是编译 Compile 。...修改Template名称 我们可以看到如果我们新建一个模板,看到的名称和原来一样,那么如何自定义自己模板名称?
续上篇,这篇我们来进一步探索 Tye 更多的使用方法。本篇我们来了解一下如何在 Tye 中如何对数据库进行链接。 Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架。...建议可以先从本文末尾的入门文章开始了解。 中间件链接 绝大多数服务都需要用到外部中间件来支持应用程序的正常运行,通常来说,就包含有数据库、缓存中间件、消息队列和文件系统等等。...GetConnectionString 是来自于 Microsoft.Tye.Extensions.Configuration 的扩展方法 MongoClient 应该全局单例还是 Scope 其实笔者也没查过资料...修改 tye.yml 以配置链接串 由于前面,我们是手动创建过了 tye.yml。因此,我们现在直接在原来的基础上进行修改,以便加入测试应用。...首先,将之前创建好的 tye.yml 放置到 TyeTest.sln 的根目录。
Windows 资源管理器使用 %var% 来使用环境变量,那么我们能否在 Visual Studio 的项目文件中使用环境变量呢? 本文介绍如何在 csproj 文件中使用环境变量。...更多关于路径的信息可以参考:UWP 中的各种文件路径(用户、缓存、漫游、安装……) - walterlv 然而,为了调试方便,我最好在 Visual Studio 中编写的时候就能直接输出到插件目录。...于是,我需要将 Visual Studio 的调试目录设置为以上目录,但是以上目录中包含环境变量 %AppData% 在 Visual Studio 中修改输出路径 如果直接在 csproj 中使用 %...你可以阅读我的另一篇博客了解更多关于输出路径的问题: 如何更精准地设置 C# / .NET Core 项目的输出路径?...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
新 csproj 文件 在 如何组织一个同时面向 UWP/WPF/.Net Core 控制台的 C# 项目解决方案 - walterlv 一文中我讲了 .NET Standard 的方式,这种方式优势非常明显...新的 csproj 文件能够指定多个开发框架。...如何指定多个开发框架 只要是新 csproj 文件,指定多个开发框架真的是相当的简单。...所以,我们需要有方法来解决其第三方库引用的差异。这时需要在 csproj 文件中指定包含条件。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布
使用插件创建 .NET Core 应用程序 本教程展示了如何创建自定义的 AssemblyLoadContext 来加载插件。...我们建议创建类库,其中包含计划用于在应用和插件之间通信的任何类型。此部分允许将插件接口作为包发布,而无需发布完整的应用程序。...使用根文件夹中的 dotnet add AppWithPlugin/AppWithPlugin.csproj reference PluginBase/PluginBase.csproj 命令将引用从...AssemblyLoadContext 类型是运行时中的特殊类型,该类型允许开发人员将已加载的程序集隔离到不同的组中,以确保程序集版本不冲突。...因此,对包含插件接口的程序集的引用需要 false 元数据。 同样,如果 PluginBase 引用其他包,则 runtime 元素也很重要。
用于打源代码包的项目 Walterlv.SourceYard.Demo 为了尽可能避免其他因素的影响,我们这个源码包只做这些事情: 包含一个 targets 文件,用于给目标项目引入源代码; 包含一个几乎没有什么代码的...obj\Debug\net48\Walterlv.GettingS tarted.SourceYard.Sample.AssemblyInfo.cs /warnaserror+:NU1605 对来自后列目录的编译器使用共享编译...那个临时的项目文件是如何生成的; 那个临时项目文件和原始的项目文件有哪些不同; 编译临时项目文件时,哪些编译目标会执行,哪些编译目标不会执行。...方案二:修改项目文件(可行,但不好) 方案二的其中一种实施方案是下面这篇文章在最后一小节说到的方法: Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包 具体来说,就是修改项目文件...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
---- 我们遇到了什么问题 如果你使用了 GitVersion 这款 NuGet 包来自动修改你的版本号,那么你可能会遇到这个问题。...那么,除非我在 B 包安装完之后,明确在 B 的 csproj 文件中写以下代码,否则 B 包发布出去后,安装 B 包的项目 C 就会同时安装上 A 包。...▲ 项目的结构 以下是 A 项目的 csproj 文件,包含将 Package.targets 在打包 NuGet 包时改名的部分。...▲ 添加调试用的 NuGet 源 我们把刚刚 A 项目的输出目录填进去添加一个新的源。于是我们就能在 B 项目中安装 A 包了。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布
然而随着项目的增大,这个 Dockerfile 会有对应的维护工作,我们来看看如何一劳永逸的简化它!...ENTRYPOINT ["dotnet", "Moonglade.Web.dll"] 其中包含 COPY 每个目录下 csproj 工程文件的步骤。而随着项目的扩充,工程文件会不断的增加、修改或删除。...我们希望Dockerfile 能自动去查找和COPY工程目录下所有的csproj文件,不想每次项目文件有更改还得手工维护 Dockerfile。 ?...首先,第一行的 COPY ./**/*.csproj ./ 会把所有子目录下的 csproj 工程文件复制到 ./ 然而这里面有个问题在于它不会保持原有的目录结构,所有被复制出来的 csproj 文件都会平行存储于...最后再把 csproj 文件移动到各自的文件夹里,效果和 VS 自动生成的 COPY 指令一模一样。
项目右键,【编辑项目文件】,csproj文件中自动增加了如下配置,其中 Condition 后面的表达式即是编译条件。OutputPath即是自定义输出目录。...查看.csproj文件 ?...查看.csproj文件,添加了如下配置 ?...默认生成的xml文件名称包含绝对路径,这个名称不是很友好,一般修改为程序集的名称即可 ? 点击菜单栏上的【保存】按钮。查看.csproj文件新增了如下配置: ?...静态文件如何指定复制行为等,或许会发现安装NuGet之后希望能编辑的文件仅仅只是一个链接而已,如何让它包含在项目里面呢,请参考微软官方文档 NuGet ContentFiles揭秘,带回解决方案级包的讨论
领取专属 10元无门槛券
手把手带您无忧上云