我正在编写一个工具来报告有关在我的客户端系统中的环境和区域部署的.NET应用程序的信息.
我想阅读这些程序集中的程序集属性的值.
这可以使用Assembly.ReflectionOnlyLoad,但是即使这种方法也可以保持装配.这里的问题是我无法从不同的路径加载两个具有相同名称的程序集,因此我无法比较在不同系统中部署的相同应用程序.
在这一点上,我假设解决方案将涉及使用临时AppDomains.
有人可以详细说明如何将程序集加载到另一个程序集中AppDomain,从中读取属性然后卸载AppDomain?
这需要适用于文件系统上的程序集以及URL地址上的程序集.
手动保持多个Visual Studio项目的属性同步是令人讨厌的.那么,您如何在多个项目之间共享属性?
编辑:我指的是条件编译符号,警告和错误处理等属性,即您可以在项目 - >属性选项卡中配置或通过编辑项目XML文件.
类似的问题已经被问过,见:1,2和3.但是,根据我的理解,答案是C++特有的.我正在寻找C#项目的答案.不过,如果你保持分离清晰,请不要犹豫,回答其他类型的项目(Visual Basic等),因为除了我之外的其他人可能会感兴趣.
这篇博客文章提出了解决问题的方法,但我更喜欢更简单的方法.
此外,您至少可以通过以下方式解决问题的一部分(请注意,虽然我测试了它,但我没有彻底测试它):
使用您要共享的程序集属性创建AssemblyInfo.cs文件.链接到各个项目中的此现有项目.使用原始(本地)AssemblyInfo.cs并将项目特定的程序集属性放在那里.不幸的是,覆盖属性似乎不起作用,现在通过GUI管理属性是有限的.
c# projects-and-solutions properties assembly-attributes visual-studio
我想版本化我的asp.net核心应用程序.
我按照以下链接:http://www.matthiaseinig.de/2013/05/20/auto-generate-fileversion-for-all-projects-in-a-solution-with-t4/,但我想删除项目装配信息,但我没有找到它.
如何删除重复的程序集信息?我想用另一个文件覆盖asp核心程序集.
过了一会儿,我意识到最好的解决方案是使用T4文件,每次构建后版本会自动递增.
看这里:
auto-versioning assembly-attributes .net-assembly .net-core asp.net-core
在.NETCore1.1中,接下来的代码
typeof(Program).GetTypeInfo().Assembly.GetCustomAttributes().ToList()
Run Code Online (Sandbox Code Playgroud)
返回自定义程序集属性列表,其中之一是AssemblyTitleAttribute. 默认情况下,此属性值返回项目名称,但如何设置其他值?
尝试按照此处AssemblyInfo.cs描述的方式添加程序集信息文件,但出现错误
错误CS0579:重复的“System.Reflection.AssemblyTitleAttribute”属性