使用特定版本的msbuildI 构建项目或解决方案时,可以使用/toolsversion或/tv切换选择较早的.net工具链:
"C:\Program Files (x86)\MSBuild\14.0\bin\msbuild" /tv:12.0 amazing.sln
Run Code Online (Sandbox Code Playgroud)
根据以上内容正确选择适用于所有版本的Just Works msbuild和版本csc.exe等:
> "C:\Program Files (x86)\MSBuild\14.0\bin\msbuild" /tv:4.0 amazing.sln
...
CoreCompile:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe ...
...
> "C:\Program Files (x86)\MSBuild\14.0\bin\msbuild" /tv:12.0 amazing.sln
...
CoreCompile:
C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe ...
...
Run Code Online (Sandbox Code Playgroud)
如果我没有指定/tv,那么根据我正在使用的msbuild的版本和一些环境变量,我可能得到以下任何一个:
msbuild.exe我正在使用的版本msbuild.exe.config(请参阅 MSDN上的Overriding ToolsVersion Settings页面的不同版本).
因此,为了在构建服务器和本地机器上具有一致结果的构建,我/tv在运行时使用msbuild.exe(事实上,这是在psake脚本中强制执行的,这也确保它使用相应的版本msbuild.exe).
但是,/tv在使用Visual Studio构建时,我无法使用该开关.相反,Visual Studio 2013及更高版本将使用该版本的Visual …
我有一个Rails 3.2应用程序,我正在Heroku Cedar堆栈上部署.这意味着应用程序本身负责提供其静态资产.我希望这些资产被gzip压缩,所以我插入Rack::Deflater到我的中间件堆栈中production.rb:
middleware.insert_after('Rack::Cache', Rack::Deflater)
Run Code Online (Sandbox Code Playgroud)
...并且curl告诉我这个广告的作用.
但是,由于Heroku将全力以赴地运行rake assets:precompile,生成一堆预先压缩的资产,我非常喜欢使用它们(而不是让Rack::Deflater所有的工作再次完成).我已经看到了使用nginx(没有在Heroku上使用)和CDN(不想使用CDN)的配方,但我还没有看到任何可以单独运行的东西.我已经将一个机架中间件一起攻击,但是我想知道这是否是最好的方法呢?
我正在尝试重现 Chas 描述的动态变量的陷阱 - http://cemerick.com/2009/11/03/be-mindful-of-clojures-binding/。
考虑以下片段:
(def ^:dynamic *dynamic-x* 10)
(defn adder [arg]
(+ *dynamic-x* arg))
(adder 5) ;; returns 15
(binding [*dynamic-x* 20]
(adder 5)) ;; returns 25
(binding [*dynamic-x* 20]
@(future (adder 5))) ;; returns 25 (!)
Run Code Online (Sandbox Code Playgroud)
实际上,我期望一旦在单独的线程上执行添加并且*dynamic-x*应该使用当前线程本地值(我应该是 10),第三种情况将返回 15。但是,出乎我意料的是,它返回了 25。
我哪里错了?