首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(12) 为了理解 UWP 启动流程,我从零开始创建了一个 UWP 程序

参见: 理解 C# 项目 csproj 文件格式本质和编译流程 将 WPF、UWP 以及其他各种类型旧 csproj 迁移成基于 Microsoft.NET.Sdk 新 csproj 于是,我创建一个...将项目改造成 UWP 项目 UWP 程序输出类型是 AppContainerExe,而不是一般 Library 或者 Exe。...UWP 项目后,似乎已经完成了大部分了,但此时直接运行会有编译错误,因为我缺少 UWP 程序必要 AppxManifest.xml 文件。...如果出现下图所示错误,建议先考虑将以上 csproj 文件中所有内容复制到你项目文件中再试。 ? 完成部署和运行 以上所有内容是一个 UWP 程序完成编译并运行所需最少信息了。...总结与后续 在本文中,我们了解到 UWP 项目所需最少文件有: *.csproj 项目文件 这是整个从零开始 UWP 程序中最复杂一个文件,因为目前没有找到任何一个 Sdk 支持 UWP

1.2K10

.NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外依赖

如果你在团队项目当中安装了 ILRepack NuGet 包,那么无论团队其他人是否安装了 ILRepack 工具,都可以使用 ILRepack 工具。.../ILRepack/) 或者直接在你项目的 csproj 文件中添加 PackageReference: 1 2 3 <PackageReference Include...如果你希望在你项目当中进行尝试,可以把后面那些代表程序集名称改为你自己项目中依赖程序集名称。 现在在编译时候使用命令 msbuild /t:ILRepack 就可以完成程序集合并了。...缺少依赖 如果你在使用 ILRepack 合并程序集过程中出现了缺少依赖错误,例如下面这样: 1 Mono.Cecil.AssemblyResolutionException: Failed to...将所有依赖合并指的是将缺少依赖也一起作为命令行参数传入要合并程序集中。 而另一种是增加一个参数 /lib,即添加一个被搜索依赖程序集目录。将这个目录指定后,则可以正确解析依赖完成合并。

66150
您找到你想要的搜索结果了吗?
是的
没有找到

将 WPF、UWP 以及其他各种类型旧 csproj 迁移成基于 Microsoft.NET.Sdk 新 csproj

EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> 这台计算机上缺少项目引用...不过,.NET Framework 项目也能够有限地得到支持。具体可支持类型以及迁移方法我小伙伴写了一篇博客,请前往此处查看:从以前项目格式迁移到 VS2017 新项目格式 - 林德熙。...比如,你可能放入项目的不止有 cs 文件,还有其他各种用途资源——你需要重新选中他们然后在属性面板中设置文件生成属性。...ProjectTypeGuid 这个属性标志着此项目类型,比如指定为 WPF 自定义控件库项目新建文件模板有自定义控件,而普通类库则不会有。 特别注意!...WPF 或者 UWP 项目迁移成新项目之后,默认新建 XAML 文件会不可见,每次都需要手工去 csproj 中删掉自动增加错误 XAML 编译类型

1.4K20

从以前项目格式迁移到 VS2017 新项目格式 必须删除必须修改添加文件项目引用引用包删除多余文件输入注释多个框架使用条件判断迁移 WPF 项目

如果想迁移 WPF 或 UWP 请看 将 WPF、UWP 以及其他各种类型旧样式 csproj 文件迁移成新样式 csproj 文件 - walterlv 现在很多项目,测试项目都使用新格式,建议在测试项目试试...输入注释 如果需要输出注释,在以前代码是在属性页面,点击生成xml,现在新格式和之前有些不一样,可以通过添加下面的代码生成xml,请看代码 <DocumentationFile...或者使用 OutputPath 相同文件夹,因为可能是自己定义了 OutputPath 下面代码就自己修改了不在当前文件夹 ..\...看一下缺少了哪些引用再自己添加。 稍微解释一下上面的代码,在一开始使用 OutputType 是告诉 VisualStudio 生成一个窗口应用程序。...dotnet 4.7 和 UWP 项目 参见:Old csproj to new csproj: Visual Studio 2017 upgrade guide 将 WPF、UWP 以及其他各种类型旧样式

3.7K20

.NET 使用 ILMerge 合并多个程序集,避免引入额外依赖

---- 以 NuGet 包形式使用 ILMerge ILMerge 提供了可供你项目使用 NuGet 包。...如果你在团队项目当中安装了 ILMerge NuGet 包,那么无论团队其他人是否安装了 ILMerge 工具,都可以使用 ILMerge 工具。.../ilmerge) 或者直接在你项目的 csproj 文件中添加 PackageReference: 1 2 3 <PackageReference Include="...System.Reflection.Metadata.dll /targetplatform:v4 其中: /ndebug 表示以非调试版本编译,如果去掉,将会生成 pdb 文件 /target 合并之后程序集类型...目标平台,如果是 .NET Framework 4.0 - .NET Framework 4.8 之间,则都是 v4 在合并完成之后,我们反编译可以发现程序集中已经包含了依赖程序集中全部类型了。

99530

如何最快速地将旧 NuGet 包 (2.x, packages.config) 升级成新 NuGet 包 (4.x, PackageReference)

csproj 升级成了新 csproj;NuGet 包管理方式也从 packages.config 升级成了 PackageReference。...然而迁移完才发现,这个项目竟然还依赖了大量从 NuGet 2.x 时代发布 NuGet 包,这些包并不能在 PackageReference 下好好工作。 于是,我准备将所有这些包都进行升级。...关于迁移 csproj 文件,可以阅读:将 WPF、UWP 以及其他各种类型旧 csproj 迁移成基于 Microsoft.NET.Sdk 新 csproj - 吕毅。...第一步:将 install.ps1 翻译成 targets 最简单方法,直接去安装好 NuGet 项目的 csproj 文件中去看究竟生成了那些代码。...这样改动是最小,既能够保证旧 packages.config 能够顺利迁移,也能保证新 PackageReference 行为保持不变。

66710

VisualStudio 2017 项目格式 自动生成版本号 添加注释防止警告生成文件自动添加版本

最近我把很多项目都使用了 VisualStudio 2017 新项目格式,在使用时候发现一些比较好用功能。...新项目格式是比较简单,但是也有一些设置项是比较复杂。...创建一个 UWP 使用 VisualStudio 2017 项目格式请看将 WPF、UWP 以及其他各种类型旧样式 csproj 文件迁移成新样式 csproj 文件 - walterlv 请看最简单创建一个...nuget ,那么就需要做一些设置,在继续阅读文本,我希望大家先看项目文件中已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - walterlv 添加注释...$(Revision) 这样就可以自动添加版本号,虽然生成版本号是用时间生成 这样用法请看项目文件中已知属性(知道了这些,就不会随便在 csproj

2.7K20

.NET Standard中配置TargetFrameworks输出多版本类库

5、编译项目,查看bin --> debug。生成了 netstandard2.0目录 ? 目录里面生成DLL,这与传统.NET Framework 类型类库项目生成结果相同。 ?...8、项目,右键【属性】-->【应用程序】--> “目标框架”被禁用,因为单个项目支持多版本类库,无法一次呈现多个,这是正确。 ?...如果需要配置不同类库输出到不同位置,也可以自定义配置输出路径实现。 查看项目属性,【生成】-->“输出”-->“输出路径”中输入自定义目录或者点击【浏览】按钮选择一个目录。 ? 填写后,保存项目。...$(Platform) 条件值有: ? 查看项目属性,【生成】-->“常规”-->“条件编译和符号”中输入自定义内容。选择 “定义DEGUG常数” 与 “定义TRACE常量”,保存项目。 ?...四、XML文档输出 选择项目,点击 属性-->生成,勾选 “XML 文档文件”。默认生成xml文件名称包含绝对路径,这个名称不是很友好,一般修改为程序集名称即可 ? 点击菜单栏上【保存】按钮。

2.7K21

使用 C# 中 dynamic 关键字调用类型方法时可能遇到各种问题

你可以使用 dynamic 来定义一个变量或者字段,随后你可以像弱类型语言一样调用这个实例各种方法,就像你一开始就知道这个类型所有属性和方法一样。...接下来讲述使用 dynamic 过程中可能会遇到问题和解决方法。 编译错误:缺少编译器要求成员 你初次在你项目中引入 dynamic 关键字后,会出现编译错误,提示 “缺少编译器要求成员”。...Standard 项目 需要为你项目安装以下两个 NuGet 包: Microsoft.CSharp System.Dynamic.Runtime 于是你项目里面会多出两个引用: 1 2 3 4...{0} 是类型名称,而 {1} 是使用 dynamic 访问属性或者方法名称。...”未包含“Key”定义” 出现此异常原因是: dynamic 所引用对象里面,没有签名相同 public 属性或者方法 于是,如果你确认你类型里面是有这个属性或者方法的话,那么就需要注意需要将此成员改成

39730

Roslyn 打包 NuGet 包 BuildTransitive 文件夹用于穿透依赖传递拷贝文件

默认 PackageReference 可以实现传递依赖,传递依赖含义是是假定 B 项目安装了 A 库,而 C 项目依赖 B 项目,那么 C 项目将会自然拿到 A 库 DLL 引用。...如果只是在最底层项目安装了库,那为了让可执行文件项目也输出库资源,就需要在可执行项目上也安装库。...在这个博客告诉大家如何打包自定义文件到 NuGet 包,和将自定义文件放在输出文件夹里面 但是以上方法存在问题如上文,只有制定了 PackageReference 安装此库项目,才能将自定义文件输出...其他项目,如果只是做传递引用,没有直接在 csproj 上写 PackageReference 安装此库,那么不会拿到自定义输出文件 如果此时自定义文件是 Native DLL 资源,而只有在底层库安装了库...但是通过传递依赖,依然可以访问到 BuildTransitivePackage 库里面的 DLL 定义类型 此时尝试生成一下 BuildTransitivePackage.Foo2 然后去到输出文件夹

63310

.NET 程序集加载上下文

如果你不了解程序集加载上下文,你可能会发现你加载了程序集却不能使用其中类型;或者把同一个程序集加载了两次,导致使用到两个明明是一样类型时却抛出异常提示不是同一个类型问题。...目录中发现程序集 Assembly.Load 方法大多数重载都将程序集加载到此上下文中 ApplicationBase 和 PrivateBinPath 这两个属性虽然允许被设置,但它们只对新生成...AppDomain 生效,直接设置当前 AppDomain 中这两个属性值并不会产生任何效果。...属性来设置多个应用程序执行时依赖探测路径。...但是,在项目文件 csproj 中,我写了一个 Target,将这些依赖全部都移动到了 Dependencies 文件夹中。

24030

WinUI 3 修复非打包应用运行提示缺少 Windows App Runtime 环境

本文将告诉大家如何修复 WinUI 3 非打包应用,在分发给到客户时,在客户机器上运行提示缺少 Windows App Runtime 环境 在用户机器上提示 Windows App Runtime...想要不弹出以上提示框,最好是需要有 WindowsAppSdkUndockedRegFreeWinRTInitialize 功能 第二步,配置 csproj 项目文件,设置 WindowsAppSDKSelfContained...默认情况下,将会在 WindowsAppSDKSelfContained 为 true 和 WindowsPackageType 属性为 None 值时,自动在 SDK 里面配置 WindowsAppSdkUndockedRegFreeWinRTInitialize...为 true 值 修改之后 csproj 项目文件大概如下 ...Include="Microsoft.WindowsAppSDK" Version="1.3.230602002" /> <PackageReference Include="Microsoft.Windows.SDK.BuildTools

2K30

.net 知新:【4】NuGet简介和使用

通常,此类代码捆绑到“包”中,其中包含编译代码(如 DLL)以及在使用这些包项目所需其他内容。...dotnet CLI 适用于 .NET Core 和 .NET Standard 项目(SDK 样式项目类型),以及任何其他 SDK 样式项目(例如,面向 .NET Framework SDK 样式项目...现在.net 5项目默认使用 PackageReference,包保留在 global-packages 文件夹中(而不是解决方案中 packages 文件夹中)。...PackageReference 仅列出那些直接安装在项目 NuGet 包,不会显示引用包所包含低级依赖更加简洁。 比如我们使用nuget安装NPOI包,它依赖如下: ?...在 Visual Studio 中,可以在项目属性中设置这些值(在解决方案资源管理器中右键单击项目,选择“属性” ,然后选择“包” 选项卡)。

2.1K40

阻止某个 NuGet 包意外升级

---- 如果你只关心结果,请直接前往最后一节:终极解决方案 准备工作 本文提供方法仅适用于使用了 Microsoft.NET.Sdk 新 csproj 项目文件。...如果你项目还在使用旧 csproj 格式,推荐阅读 将 WPF、UWP 以及其他各种类型旧 csproj 迁移成基于 Microsoft.NET.Sdk 新 csproj 迁移成新格式之后再开始...▲ 当小伙伴打开包管理器时候,会发现包版本不一致,然后就不小心升级了 思路 NuGet 使用 PackageReference 来管理所有的包引用,于是我试图通过隐藏 LiteDB PackageReference...而一个典型隐藏方法便是使用 Target。不在 Target 里面的属性和项是提前计算好,而 Target 里面的属性和项是编译时才计算。...于是我可以将我们 BeforeTargets 指定为 CollectPackageReferences。 不过我发现在这种情况下,NuGet 包管理器界面中能够发现这个项目使用了旧版本。

1.3K20

从零开始构建MSBuild C#项目文件

>Bin\ 每个项目文件可以包括若干个PropertyGroup节点,其中可以包括若干个属性节点,每一个节点定义一个属性,可以在项目文件中引用...这里就包括了AssemblyName和OutputPath两个属性。之后就可以通过$(属性名)语法来使用了。...$(OutputPath)$(AssemblyName).exe" /> 这里增加了一个创建文件夹任务,创建文件夹名字由上面的属性组定义。...增量构建 在名为BuildTarget中添加如下属性: Inputs="@(Compile)" Outputs="$(OutputPath)$(AssemblyName).exe" Inputs属性指定该目标依赖输入文件...PropertyGroup节点是属性组,可以有多个节点,用来包含项目构建过程中使用到属性。定义了属性之后,可以使用$(属性名)语法来访问。

94320

项目文件中已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦)

项目文件中已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) 发布于 2018-05-10 13:49...---- “项目文件中已知属性系列”分为两个部分: 项目文件中已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - 吕毅 本文:项目文件中已知 NuGet 属性(使用这些属性,创建...-- 大致与 IncludeSymbols 相同,不过只会额外把 pdb 和 Compile 类型文件打包到 NuGet 包中。...-- 默认情况下,项目输出 dll 会被打包到 lib 目录下; 设置了此属性后,就可以打包到其他目录下了。... 引用项目或包中指定部分是本项目的依赖项。默认为 all。 引用项目或包中指定部分不是本项目的依赖项,应该排除。

1.9K10

WPF 使用 Win2d 渲染

及以上 Windows 10 SDK - Windows 应用开发 新建一个 WPF .NET Framework 4.8 项目,在这个项目上面安装下面 NuGet 包 Microsoft.Windows.SDK.Contracts...注意此时你新建项目使用 nuget 格式需要新 Nuget 格式,也就是不带 package.config 文件格式 <PackageReference Include="Microsoft.VCRTForwarders..._canvasDevice = CanvasDevice.GetSharedDevice() 时候提示下面的代码 System.TypeLoadException:“所请求 Windows 运行时类型...(异常来自 HRESULT:0x8007007E)” 这个问题是在输出文件夹缺少文件,请确定当前使用是 x64 设备,同时进行 AnyCpu 编译,没有勾选首选 32 程序 然后确定在 bin\debug...当然这样呆魔大家一定不想使用,于是我将需要添加文件放在项目文件,设置自动输出,请小伙伴换我项目试试 我将代码放在 Github 只需要下载代码,然后打开 sln 文件,右击还原项目,然后在 AnyCpu

88520
领券