小编int*_*e02的帖子

了解csproj程序集引用

我正在使用VS2010,我试图通过文件引用从本地硬盘添加一些程序集到我的C#项目.窥视csproj文件,我发现有时文件引用显示为

<Reference Include="name">
Run Code Online (Sandbox Code Playgroud)

但有时它看起来像

<Reference Include="name, Version=xxx, Culture=neutral, 
                                          processorArchitecture=MSIL">
Run Code Online (Sandbox Code Playgroud)

什么可能导致差异?


受到k3b答案的启发,我做了另一个测试.我创建了一个新的类库项目.

  1. 添加文件引用.的初始值特定版本属性面板是.该csproj文件看起来像

    <Reference Include="Name">
      <HintPath>...</HintPath>
    </Reference>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 更改特定版本属性窗格.VS在Include属性中添加版本.

    <Reference Include="Name, Version=...">
      <HintPath>...</HintPath>
    </Reference>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 更改特定版本属性窗格中一次.VS添加了一个子元素SpecificVersion.

    <Reference Include="Name, Version=...">
      <HintPath>...</HintPath>
      <SpecificVersion>False</SpecificVersion>
    </Reference>
    
    Run Code Online (Sandbox Code Playgroud)

所以似乎规则是:

  • 版本存在于包括属性,并且没有SpecificVersion子元素,该文件组件被配置为特定版本
  • SpecificVersion子元素只与价值附加.

有一点我还是不明白:

  • 对于我的新测试项目,如果我删除文件引用并再次添加它,它将返回到第1点的格式,这是默认值.
  • 对于我现有的项目,如果我删除文件引用并再次添加它,我会在第3点找回格式.虽然这也意味着没有使用特定版本,但我想知道为什么它不会回到第1点的格式.

c# reference csproj visual-studio-2010 .net-assembly

63
推荐指数
1
解决办法
4万
查看次数

ASP.NET MVC视图引擎解析序列

我创建了一个简单的ASP.NET MVC 1.0版应用程序.我有一个ProductController,它有一个动作索引.在视图中,我在Product子文件夹下创建了相应的Index.aspx.

然后我引用了Spark dll并在同一Product视图文件夹下创建了Index.spark.Application_Start看起来像

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);

        ViewEngines.Engines.Clear();
        ViewEngines.Engines.Add(new Spark.Web.Mvc.SparkViewFactory());

        ViewEngines.Engines.Add(new WebFormViewEngine());

    }
Run Code Online (Sandbox Code Playgroud)

我的期望是,由于Spark引擎在默认WebFormViewEngine之前注册,当浏览Product controller中的Index操作时,应该使用Spark引擎,并且WebFormViewEngine应该用于所有其他URL.

但是,测试显示Product控制器的Index操作也使用WebFormViewEngine.

如果我注释掉WebFormViewEnginer的注册(代码中的最后一行),我可以看到Index动作由Spark引擎呈现,其余的URL生成错误(因为defualt引擎已经消失),它证明了我所有的Spark代码是正确的.

现在我的问题是视图引擎是如何解决的?为什么注册序列不生效?

asp.net-mvc viewengine spark-view-engine

10
推荐指数
1
解决办法
3447
查看次数

ASP.NET中的自动机器密钥生成

默认情况下,机器密钥设置是自动生成和每个应用程序(AutoGenerate,IsolateApps).MSDN声明解密密钥和验证密钥基于Web应用程序ID.我在我的IIS 7服务器上托管了两个ASP.NET MVC 2站点,但发现机器密钥是相同的.我通过使用反射来验证这一点,以查看ValidationKeyInternal和DecryptionKeyInternal属性.我还通过在一个站点上生成防伪令牌cookie并将其传递给另一个站点来测试它,并且可以读取cookie.

经过反复试验,我发现如果应用程序池标识发生更改,密钥将会更改.这两个站点具有相同的密钥,因为它们在网络服务凭证下运行.一旦我更改了一个站点的应用程序池标识,他们就会开始使用不同的验证/加密密钥.

但是,在将两个站点部署到另一个服务器之后,即使更改了应用程序池标识,我也总是获得相同的机器密钥.这两台服务器具有相同的硬件和软件配置.

我想知道是否存在关于如何在AutoGenerate,IsolateApps设置下生成机器密钥的实际逻辑的参考.在Web上,有很多文章讨论在Web场方案中设置相同的机器密钥.但我在对面遇到了问题.每个Web应用程序自动密钥生成似乎无法正常工作.以前有没有人有同样的问题?

asp.net iis machinekey

5
推荐指数
1
解决办法
2099
查看次数