我有另一个"无法加载文件或程序集或其中一个依赖项"的问题.
附加信息:无法加载文件或程序集"Microsoft.Practices.Unity,Version = 1.2.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
我不知道是什么导致这个或我如何调试它来找到原因.
我已经在我的解决方案目录.csproj文件中进行了搜索,以及我拥有Unity的所有地方:
参考Include ="Microsoft.Practices.Unity,Version = 2.0.414.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL"
在我的任何项目中找不到任何与1.2.0.0相对应的参考.
任何想法我应该如何解决这个问题?
我也很欣赏如何调试这样的问题的技巧.
我有一个多项目的解决方案.我试图通过链接一个解决方案范围的程序集信息文件来优化AssemblyInfo.cs文件.这样做的最佳做法是什么?哪些属性应该在解决方案范围的文件中,哪些属于项目/程序集特定?
编辑:如果您有兴趣,有一个后续问题AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别?
在.NET中,构建项目时可以使用两个版本号,即文件版本和汇编版本.你是如何使用这些数字的?保持不变?自动递增一个,但手动更改另一个?
那个AssemblyInformationalVersion属性呢?
我发现这个支持Microsoft知识库(KB)的文章提供了一些帮助: 如何使用汇编版本和汇编文件版本.
dll的FileVersion和ProductVersion有什么区别?
特别是在运行时,是一个用于强绑定,另一个用于信息?
我想手动设置一个,另一个自动递增(通过我们的CI构建过程)
编辑:理查德在原始问题中回答了我错过的部分.这是我想要手动控制的汇编版本(通过界面更改递增),而它是我希望我的CI系统在每次构建时自动递增的文件版本.谢谢.
我们将我们的构建版本化为[major].[minor].[micro].[revision],例如2.1.2.33546.
我们的构建脚本自动更新包含的AssemblyInfo.cs文件
[assembly: AssemblyVersion("x.y.z.w")]
Run Code Online (Sandbox Code Playgroud)
为了在程序集中嵌入版本号.
但我们的Subversion-repository刚刚达到修订版#65535,这打破了我们的构建.
事实证明,版本号中的每个数字的最大值为65534(可能是由于Windows限制).
你遇到过这个问题吗?有什么好的解决方案/解决方法吗?
我们喜欢嵌入修订号的方案,我们显然不能只重置我们的Subversion服务器:-)
有没有办法在.NET程序集的版本字符串中包含SVN存储库修订号?像Major.Minor.SVNRev这样的东西
我已经看到提到用CC.NET这样的东西(尽管实际上是在ASP.NET上),但有没有办法在没有任何额外软件的情况下做到这一点?在使用构建批处理脚本之前,我在C/C++中做了类似的事情,但是通过读取版本号来完成,然后让脚本每次都写出一个名为"ver.h"的文件,其效果如下:
#define MAJORVER 4
#define MINORVER 23
#define SOURCEVER 965
Run Code Online (Sandbox Code Playgroud)
然后我们将使用这些定义来生成版本字符串.
这样的.NET可能吗?
鉴于以下内容:
string file = @"c:\somepath\somefile.dll";
Run Code Online (Sandbox Code Playgroud)
如何使用.NET查找该DLL的文件和产品版本号?
dll可以是本机的或托管的.
谢谢.
我在assemblyinfo.cs类中有代码:
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)
调用System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()工作正常并提供更新版本,但是,当我在Windows资源管理器中查看生成的dll时,右键单击属性,单击"详细信息"选项卡,fileversion显示"1.0.0.0",即使上面的输出显示为1.0.3489.17621 ?
我注意到在新的 .NET Core 项目中没有AssemblyInfo.cs创建文件。我已经看到您仍然可以设置诸如AssemblyVersion等等之类的程序集属性。
使用 AssemblyInfo.cs 文件还有什么正当理由吗?
我们有一个每晚构建过程,自动版本化所有C++项目.这是它的工作原理.有一个通用的头文件VersionNumber.h,具有特定#define的版本号.nighly build检查此文件,增加后面的整数#define并将其检入.所有Visual C++项目#include都标题到其资源文件中并使用该定义来指定版本(版本很像1.0.3.ThatNumber).
到现在为止还挺好.现在,我想对在同一日常构建中构建的C#类库具有相同的功能.目前他们都有
[assembly: AssemblyVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)
在AssemblyInfo.cs文件和库中最终得到 1.0.HorribleNumber.AnotherHorribleNumber得到版本,这两个数字与C++项目使用的数字无关.
如何以最小的努力在我的C#项目中使用相同的清除自动版本编号?
.net ×9
c# ×6
versioning ×4
assemblies ×2
attributes ×2
svn ×2
.net-core ×1
assemblyinfo ×1
build ×1
dll ×1
reference ×1
versions ×1