参见: 理解 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
如果你在团队项目当中安装了 ILRepack 的 NuGet 包,那么无论团队其他人是否安装了 ILRepack 的工具,都可以使用 ILRepack 工具。.../ILRepack/) 或者直接在你的项目的 csproj 文件中添加 PackageReference: 1 2 3 <PackageReference Include...如果你希望在你的项目当中进行尝试,可以把后面那些代表程序集的名称改为你自己项目中依赖程序集的名称。 现在在编译的时候使用命令 msbuild /t:ILRepack 就可以完成程序集的合并了。...缺少依赖 如果你在使用 ILRepack 合并程序集的过程中出现了缺少依赖的错误,例如下面这样: 1 Mono.Cecil.AssemblyResolutionException: Failed to...将所有依赖合并指的是将缺少的依赖也一起作为命令行参数传入要合并的程序集中。 而另一种是增加一个参数 /lib,即添加一个被搜索的依赖程序集的目录。将这个目录指定后,则可以正确解析依赖完成合并。
EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> 这台计算机上缺少此项目引用的...不过,.NET Framework 项目也能够有限地得到支持。具体可支持的类型以及迁移方法我的小伙伴写了一篇博客,请前往此处查看:从以前的项目格式迁移到 VS2017 新项目格式 - 林德熙。...比如,你可能放入项目的不止有 cs 文件,还有其他各种用途的资源——你需要重新选中他们然后在属性面板中设置文件的生成属性。...ProjectTypeGuid 这个属性标志着此项目的类型,比如指定为 WPF 自定义控件库的项目新建文件的模板有自定义控件,而普通类库则不会有。 特别注意!...WPF 或者 UWP 项目迁移成新项目之后,默认新建的 XAML 文件会不可见,每次都需要手工去 csproj 中删掉自动增加的错误的 XAML 编译类型。
如果想迁移 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 以及其他各种类型的旧样式的
---- 以 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 在合并完成之后,我们反编译可以发现程序集中已经包含了依赖程序集中的全部类型了。
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 行为保持不变。
最近我把很多项目都使用了 VisualStudio 2017 新项目格式,在使用的时候发现一些比较好用的功能。...新的项目格式是比较简单的,但是也有一些设置项是比较复杂。...创建一个 UWP 使用 VisualStudio 2017 项目格式请看将 WPF、UWP 以及其他各种类型的旧样式的 csproj 文件迁移成新样式的 csproj 文件 - walterlv 请看最简单创建一个...nuget 的,那么就需要做一些设置,在继续阅读文本,我希望大家先看项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - walterlv 添加注释...$(Revision) 这样就可以自动添加版本号,虽然生成的版本号是用时间生成 这样的用法请看项目文件中的已知属性(知道了这些,就不会随便在 csproj
5、编译项目,查看bin --> debug。生成了 netstandard2.0目录 ? 目录里面生成的DLL,这与传统.NET Framework 类型的类库项目生成结果相同。 ?...8、项目,右键【属性】-->【应用程序】--> “目标框架”被禁用,因为单个项目支持多版本类库,无法一次呈现多个,这是正确的。 ?...如果需要配置不同的类库输出到不同的位置,也可以自定义配置输出路径实现。 查看项目属性,【生成】-->“输出”-->“输出路径”中输入自定义目录或者点击【浏览】按钮选择一个目录。 ? 填写后,保存项目。...$(Platform) 的条件值有: ? 查看项目属性,【生成】-->“常规”-->“条件编译和符号”中输入自定义内容。选择 “定义DEGUG常数” 与 “定义TRACE常量”,保存项目。 ?...四、XML文档输出 选择项目,点击 属性-->生成,勾选 “XML 文档文件”。默认生成的xml文件名称包含绝对路径,这个名称不是很友好,一般修改为程序集的名称即可 ? 点击菜单栏上的【保存】按钮。
你可以使用 dynamic 来定义一个变量或者字段,随后你可以像弱类型语言一样调用这个实例的各种方法,就像你一开始就知道这个类型的所有属性和方法一样。...接下来讲述使用 dynamic 过程中可能会遇到的问题和解决方法。 编译错误:缺少编译器要求的成员 你初次在你的项目中引入 dynamic 关键字后,会出现编译错误,提示 “缺少编译器要求的成员”。...Standard 项目 需要为你的项目安装以下两个 NuGet 包: Microsoft.CSharp System.Dynamic.Runtime 于是你的项目里面会多出两个引用: 1 2 3 4...{0} 是类型名称,而 {1} 是使用 dynamic 访问的属性或者方法的名称。...”未包含“Key”的定义” 出现此异常的原因是: dynamic 所引用的对象里面,没有签名相同的 public 的属性或者方法 于是,如果你确认你的类型里面是有这个属性或者方法的话,那么就需要注意需要将此成员改成
默认的 PackageReference 可以实现传递依赖,传递依赖的含义是是假定 B 项目安装了 A 库,而 C 项目依赖 B 项目,那么 C 项目将会自然拿到 A 库的 DLL 引用。...如果只是在最底层的项目安装了库,那为了让可执行文件项目也输出库的资源,就需要在可执行项目上也安装库。...在这个博客告诉大家如何打包自定义的文件到 NuGet 包,和将自定义的文件放在输出文件夹里面 但是以上方法存在的问题如上文,只有制定了 PackageReference 安装此库的项目,才能将自定义的文件输出...其他的项目,如果只是做传递引用,没有直接在 csproj 上写 PackageReference 安装此库,那么不会拿到自定义输出文件 如果此时自定义的文件是 Native 的 DLL 资源,而只有在底层的库安装了库...但是通过传递依赖,依然可以访问到 BuildTransitivePackage 库里面的 DLL 定义类型 此时尝试生成一下 BuildTransitivePackage.Foo2 然后去到输出文件夹
请先浏览上一篇驱动简介 创建驱动项目 在解决方案->Drivers文件夹,右键添加->新建项目->C#类库 图片 项目名DriverSimTcpClient,放在iotgateway\Plugins...ImplicitUsings>enable enable 说明 OutputPath节点指定了生成项目的文件夹 SimpleTCP.Core...是一个TCP客户端库(你也可以自己写) ProjectReference节点引用了PluginInterface项目 CopyLocalLockFileAssemblies节点可以确保你引用的nuget...web端的录入,这里没用到 但是你可以拿到 /// [ConfigParameter("连接类型")] public ConnectionType
,开源,可以用dotnet tool或项目构建的方式进行使用 那就先用Obfuscar试试水。...Obfuscar.xml 6、在生成的Obfuscar文件夹中可以找到被加壳后的同名Logic.dll 上述得到的Logic.dll即可被其他项目直接引用,加密后类似: 方式二:dotnet tool...方式三:项目构建 1、在csproj 项目文件中添加安装Obfuscar的代码: 2、在项目中添加一个Obfuscar.xml 文件,内容跟方式一的类似,再在csproj 项目文件中设置更新 $(Obfuscar) "Obfuscar.xml" <Exec WorkingDirectory="$(<em>OutputPath</em>
如果你不了解程序集加载上下文,你可能会发现你加载了程序集却不能使用其中的类型;或者把同一个程序集加载了两次,导致使用到两个明明是一样的类型时却抛出异常提示不是同一个类型的问题。...目录中发现的程序集 Assembly.Load 方法的大多数重载都将程序集加载到此上下文中 ApplicationBase 和 PrivateBinPath 这两个属性虽然允许被设置,但它们只对新生成的...AppDomain 生效,直接设置当前 AppDomain 中这两个属性的值并不会产生任何效果。...属性来设置多个应用程序执行时的依赖探测路径。...但是,在项目文件 csproj 中,我写了一个 Target,将这些依赖全部都移动到了 Dependencies 文件夹中。
本文将告诉大家如何修复 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
通常,此类代码捆绑到“包”中,其中包含编译的代码(如 DLL)以及在使用这些包的项目中所需的其他内容。...dotnet CLI 适用于 .NET Core 和 .NET Standard 项目(SDK 样式的项目类型),以及任何其他 SDK 样式项目(例如,面向 .NET Framework 的 SDK 样式项目...现在.net 5的项目默认使用 PackageReference,包保留在 global-packages 文件夹中(而不是解决方案中的 packages 文件夹中)。...PackageReference 仅列出那些直接安装在项目中的 NuGet 包,不会显示引用包所包含的低级依赖更加简洁。 比如我们使用nuget安装NPOI包,它的依赖如下: ?...在 Visual Studio 中,可以在项目属性中设置这些值(在解决方案资源管理器中右键单击项目,选择“属性” ,然后选择“包” 选项卡)。
---- 如果你只关心结果,请直接前往最后一节:终极解决方案 准备工作 本文提供的方法仅适用于使用了 Microsoft.NET.Sdk 的新 csproj 项目文件。...如果你的项目还在使用旧的 csproj 格式,推荐阅读 将 WPF、UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj 迁移成新格式之后再开始...▲ 当小伙伴打开包管理器的时候,会发现包版本不一致,然后就不小心升级了 思路 NuGet 使用 PackageReference 来管理所有的包引用,于是我试图通过隐藏 LiteDB 的 PackageReference...而一个典型的隐藏方法便是使用 Target。不在 Target 里面的属性和项是提前计算好的,而 Target 里面的属性和项是编译时才计算的。...于是我可以将我们的 BeforeTargets 指定为 CollectPackageReferences。 不过我发现在这种情况下,NuGet 包管理器的界面中能够发现这个项目使用了旧版本。
>Bin\ 每个项目文件可以包括若干个PropertyGroup节点,其中可以包括若干个属性节点,每一个节点定义一个属性,可以在项目文件中引用...这里就包括了AssemblyName和OutputPath两个属性。之后就可以通过$(属性名)的语法来使用了。...$(OutputPath)$(AssemblyName).exe" /> 这里增加了一个创建文件夹的任务,创建的文件夹名字由上面的属性组定义。...增量构建 在名为Build的Target中添加如下属性: Inputs="@(Compile)" Outputs="$(OutputPath)$(AssemblyName).exe" Inputs属性指定该目标依赖的输入文件...PropertyGroup节点是属性组,可以有多个节点,用来包含项目构建过程中使用到的属性。定义了属性之后,可以使用$(属性名)语法来访问。
项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) 发布于 2018-05-10 13:49...---- “项目文件中的已知属性系列”分为两个部分: 项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - 吕毅 本文:项目文件中的已知 NuGet 属性(使用这些属性,创建...-- 大致与 IncludeSymbols 相同,不过只会额外把 pdb 和 Compile 类型的文件打包到 NuGet 包中。...-- 默认情况下,项目输出的 dll 会被打包到 lib 目录下; 设置了此属性后,就可以打包到其他目录下了。... 引用的项目或包中的指定部分是本项目的依赖项。默认为 all。 引用的项目或包中的指定部分不是本项目的依赖项,应该排除。
*.AppHost项目负责充当协调器,并将IsAspireHost项目文件的属性设置为true ...调用AddProject给定的泛型类型参数和项目IServiceMetadata详细信息,将AspireSample.ApiService项目添加到应用程序模型中。...共享 .NET Aspire 项目文件包含IsAspireSharedProject设置为的属性true: 服务默认项目在IHostApplicationBuilder类型上公开一个名为 的扩展方法AddServiceDefaults。...webfrontend""apiservice""redis" 前端应用程序定义了HttpClient用于与 API 项目通信的类型。
及以上 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
领取专属 10元无门槛券
手把手带您无忧上云